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()。