看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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