Re: [問題] VC2005 挪擖X為亂碼

看板Programming作者 (IWH68S0XZ8M89)時間17年前 (2007/11/20 23:36), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《meltice (三億兩千萬大散戶)》之銘言: : 這樣寫完全沒錯 : 錯的應該是notepad : 剛剛我照你的程式執行一遍 : 文字檔大小20byte : 用notepad打開變成一堆方塊 : 可是用UltraEdit開卻正常 : 然後我直接在notepad照著打 : 0 1 2 ... : 然後存檔 : 再打開 : 果然變成一堆方塊 : 接著我無聊再玩一下 : 只要最後不要打TAB或是打兩個TAB : 存檔 : 就沒有這個問題 : 好神奇啊 : 怎麼會這樣??? : 不過如果存檔成unicode就沒有以上說的問題了 這是notepad誤判編碼.... 0<Tab> 以16進位看是 0x30 0x09 如果看成Little endian的16-bit的話 它是0x0930 同理 1<Tab> 會看作 0x0931 而Unicode的U+0900~U+097F是Devanagari印度文 於是notepad看到如果解釋成Unicode 全篇都是印度文字 OK 就判斷它是少了BOM的Unicode編碼了 如果你在後面再加一個10<Tab> 因為它打亂了這個關係 notepad看到它認為的下一個字是U+3031 是個像ㄑ的符號 這已經不是印度文了 所以它判斷這個是ANSI編碼 就一切正常 多一個或少一個Tab也正常的原因也是因為打亂了關係 -- 至於不會判斷成Unicode Big Endian的原因... 因為這樣看的話會出現U+3400以後的Extension A的字元集 顯然是不對的 -- 話說我用的Notepad2也會誤判... -- "LPH" is for "Let Program Heal us".... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.91.5 ※ 編輯: LPH66 來自: 140.112.91.5 (11/20 23:37) ※ 編輯: LPH66 來自: 140.112.91.5 (11/20 23:38)

11/21 00:30, , 1F
推 太神了!
11/21 00:30, 1F

11/21 02:26, , 2F
都嚕都嚕大大大
11/21 02:26, 2F

11/21 14:51, , 3F
11/21 14:51, 3F

11/23 23:37, , 4F
那為什麼UltraEdit不會誤判
11/23 23:37, 4F

11/23 23:38, , 5F
看來判斷編碼應該很複雜吧
11/23 23:38, 5F

11/23 23:38, , 6F
只是UltraEdit太過聰明了 它會自動把UTF8
11/23 23:38, 6F

11/23 23:39, , 7F
編碼的檔案轉成Unicode 這樣我無法從
11/23 23:39, 7F

11/23 23:40, , 8F
HEX mode看出這個檔案究竟是不是UTF8編碼
11/23 23:40, 8F

11/23 23:43, , 9F
不過還好可以關閉自動轉換UTF8功能
11/23 23:43, 9F

11/23 23:43, , 10F
但是這樣一來就無法正確顯示UTF8檔案
11/23 23:43, 10F
文章代碼(AID): #17GlyKP2 (Programming)
討論串 (同標題文章)
文章代碼(AID): #17GlyKP2 (Programming)