Sunday, June 5, 2022

xercesc xml encoding 問題

xercesc 內部使用 Unicode (UTF-16) 編碼, 輸出檔案時,使用多字元 (UTF-8) 編碼? 

使用 UltraEditor 開啟 xml, kml 檔案時,使用 Hex 模式 查看時, 會發現 UltraEditor (Ver. 10.20+, V 10 不會出錯) 會在檔頭加上Unicode 識別嗎 FFFE,並 以 Unicode 顯示,但其實檔案內容還是 multibyte,不要被騙了。 Unicode,  

xercesc 自訂變數型態

        XMLCh = char16_t

其實就是雙字元 (Unicode), wchar_t, 但不能直接轉換。

        XMLCh* xmlCh;

        wchar_t* ws = xmlCh;   //不能這麼做

但,可以用強制轉換:

        wchar_t* ws = (wchar_t*)xmlCh

在 xercesc 的函數使用到 XMLCh* 參數時,

英文及數字可以用 XMLString::transcode() 轉換為 XMLCh,例如:

        XMLCh* xmlCh =  XMLString::transcode("abc");

        DOMElement* nodeFolder = pDOM->createElement(XMLString::transcode("Folder"));

UTF-8編碼的文字必須先轉換成 wchar_t (就是Unicode啦), 再直接轉換成 XMLCh*,不必用XMLString::transcode()。 

No comments:

Post a Comment

phpMyAdmin 無法存取 MariaDB 10 的解決方法

 [Reference]  https://www.qnap.com/zh-tw/how-to/faq/article/%E7%82%BA%E4%BB%80%E9%BA%BC%E7%84%A1%E6%B3%95%E5%9C%A8-phpmyadmin-%E5%AD%98%E5%8...