作者oppositebank (咖哩獸)
看板C_and_CPP
標題[問題] 有關UTF8編碼
時間Thu Dec 11 21:18:10 2014
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
爬了一下版上大多是轉換編碼
可是我的問題有點不同
我會先用A.exe讀一個UTF8的txt
然後將其中三個字串作為變數 執行另一個B.exe(也就是這次想問的)
這個B.exe是想將這三個字串寫入一個新的txt 並同樣以UTF8編碼
也就是說 我一開始讀進來的字串本身就是以UTF8編碼
我是以為 既然我讀的就是UTF8
我只要用BOM讓新建的txt是UTF8 應該就可以了
(我有看到UTF8不須BOM 但是給他BOM應該也沒關係吧)
但結果部分中文可以正常顯示 部分卻是亂碼
有點不明白為何
餵入的資料(Input):
UTF8字串:
82
宜蘭
蘭陽橋
預期的正確結果(Expected Output):
82
宜蘭
蘭陽橋
錯誤結果(Wrong Output):
82
宜蘭
(亂碼)陽(亂碼)
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/66aQqPwJ
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.241.202
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1418303894.A.0DE.html
→ uranusjr: 其實照 UTF8 規格是「不能」給 BOM 12/12 02:11
→ PoorLoser: 比對兩份文字檔的 binary code 12/12 02:13
→ uranusjr: 重看之後發現好像其實沒有禁止 BOM... sorry (有點離題) 12/12 02:16
→ serikafan: 你的程式碼我在linux下用utf8的環境執行是正常的,不過 12/12 13:19
→ serikafan: windows的cmd環境應該沒支援utf8,我想應該是字串被當成 12/12 13:23
→ uranusjr: 還有個可能是 CRLF 問題 12/12 13:24
→ serikafan: 系統語系處理(big5之類的)出的問題 12/12 13:24
→ oppositebank: 原來是OS 感謝~ 12/13 10:04