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

[Qt] 執行檔需要哪些 Dll?

 1. 使用 Qt  的 windeployqt.exe 工具 (在 C:\Qt\Qt5.14.1\5.14.1\msvc2017\bin\)。   a. 把執行檔 myProgram.exe 放在某個資料夾。   b. 在檔案總管這個資料夾按 Shift 和滑鼠右鍵,開啟 Po...