看板 Programming 關於我們 聯絡資訊
※ 引述《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)
Arton0306:推 太神了! 123.195.50.65 11/21 00:30
buganini:都嚕都嚕大大大 221.169.71.109 11/21 02:26
ledia:推 140.112.30.56 11/21 14:51
meltice:那為什麼UltraEdit不會誤判 60.245.94.27 11/23 23:37
meltice:看來判斷編碼應該很複雜吧 60.245.94.27 11/23 23:38
meltice:只是UltraEdit太過聰明了 它會自動把UTF8 60.245.94.27 11/23 23:38
meltice:編碼的檔案轉成Unicode 這樣我無法從 60.245.94.27 11/23 23:39
meltice:HEX mode看出這個檔案究竟是不是UTF8編碼 60.245.94.27 11/23 23:40
meltice:不過還好可以關閉自動轉換UTF8功能 60.245.94.27 11/23 23:43
meltice:但是這樣一來就無法正確顯示UTF8檔案 60.245.94.27 11/23 23:43