[問題] chardet.detect 的 Big5 誤判為 GB2312

看板Python作者 (無格調)時間13年前 (2012/03/02 19:11), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
請教各位大大, 最近我嘗試把之前舊的純文字檔從 Windows 裡搬到 Ubuntu。 因為一些理由,想把檔案都換成 UTF-8 編碼。 於是寫了隻 python 簡單利用 Ecd = chardet.detect(Txt)['encoding']; 和 Txt = unicode(Txt, Ecd, 'ignore').encode('utf-8', 'ignore'); 批次將檔案轉編。 但是我發現在偵測編碼時,居然有些檔案會判斷為 GB2312 而不是預期的 Big5。 文字檔都是我在使用 Windows 的時期撰寫的,那時根本還不知道選編碼方式, 所以應該都是 Big5 才對。 要請問各位,這樣偵測編碼是否不正確,或者不夠嚴謹? 是否還有其它的偵測方式? 還在持續摸索 python,希望有天能寫出一些有用的程式來 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.115.139.175 ※ 編輯: ZFang 來自: 59.115.139.175 (03/03 03:12)

03/03 03:30, , 1F
有可能是ambiguous
03/03 03:30, 1F

03/03 03:31, , 2F
單純轉換固定編碼的話用piconv之類的就好啦? 為啥要判斷?
03/03 03:31, 2F

03/03 12:34, , 3F
就我了解,detect是用猜的,會有猜錯的機會。
03/03 12:34, 3F

03/03 12:34, , 4F
所以不能盡信chardect
03/03 12:34, 4F

03/03 12:35, , 5F
更正一下 不能講猜,說'統計'比較正確
03/03 12:35, 5F

03/04 02:34, , 6F
感謝各位的指導。本來是想成會自動判斷,可用性比較高。
03/04 02:34, 6F

03/04 02:36, , 7F
不過既然這作法不精準,那還是乖乖的用已知的編碼轉換~
03/04 02:36, 7F
文章代碼(AID): #1FKHjFZT (Python)