MFC用CStdioFile類讀取中文文字時亂碼問題的一種解決方法
阿新 • • 發佈:2019-01-30
在文章開始之前,先宣告一下,本人的程式設計環境為vs2010,MFC工程使用unicode字符集。
在MFC中,用CStdioFile類可以很方便地一行一行讀取檔案。 可是最近我在編寫MFC程式時,用CStdioFile讀取中文文字時,發現讀入的是亂碼。在網上查了很多方法都得不到很好的解決。後來本人冷靜下來仔細分析了一下,找到了一種可行的方法。下面是我的這種方法的基本思路:
讀入 MultiByteToWideChar()
中文文字(ascii編碼方式) --------------> char ch[ ] ----------------------------------> wchar_t wch[ ]
首先,為了讀入中文文字,我從CFile類派生了自己的類CMyFile,並在CMyFile類中新增並實現了每次讀取一行的GetLine()函式。
然後,用GetLine函式每次從檔案中讀取一行,存入字元陣列char ch[ ]中。
到目前為止,陣列ch[ ]中的字元是ascii編碼方式,為了將其轉換為unicode編碼方式,需呼叫API函式MultiByteToWideChar()。
在這裡,具體的程式碼我就不詳細寫了,自己研究一下應該很容易寫出的。