讀取Unicode格式TXT檔案問題
阿新 • • 發佈:2019-02-07
問題:
由於本來windows的txt字尾檔案讀取格式預設為ansi,但是為了在mfc中讀取中文字元
使用CStidFile開啟檔案直接讀取會出現亂碼
檔案轉換:
1.先將ansi格式文件另存為unicode文件
2.開啟檔案模式新增CStdioFile::typeUnicode
查詢方便:
為了方便查尋,所以將字元對照表寫進txt檔案,每次讀完一次對照表就寫入unordered_map中
每次迴圈呼叫unordered_map時,可以直接進行查詢而省去了硬編碼的部分
但是在查詢時unordered_map,明明是有key值的,但是卻查詢失敗,返回end
到此為止,問題已經持續幾個小時了!!
原因:
使用CString的getlength函式,查到,讀取第一個片語時,unicode格式txt檔案包含2個位元組的位元組頭!!!!!
所以每次找匹配時,都是錯誤的!!
遂在開啟檔案後,先將檔案後移2個位元組,問題解決
CStdioFile file;
file.Open(_T("D://1//test.txt"), CStdioFile::modeRead | CStdioFile::typeUnicode);
file.Seek(2, CFile::begin);