[問題] 又是中文編碼的問題

看板Python作者 (哥)時間9年前 (2016/07/01 10:38), 9年前編輯推噓2(2017)
留言19則, 7人參與, 最新討論串1/1
我在這裡看到這篇文章(http://goo.gl/lYCk7r) 大意是說,有些big5中文字,轉換時 python 會報錯。 例如 在big5中是"恒"字 #python3.3.2 print(b'\xf9\xda'.decode('big5')) #UnicodeDecodeError: 'big5' codec can't decode byte 0xf9 in position 0: illegal multibyte sequence 文中有提到這個字可以用big5hkscs來解碼,還是有一些 字無法解。 因為我常要大量轉碼,其實遇到的這情況的機率比想像中 高,我也不想要直接 ignore。 我現在想到的是遇到exception 就再試試別的編碼,但是 這實在有點笨。 一般你們在處理這些字時,會怎麼做呢? 後記:再看到這篇https://goo.gl/BYnSHz我就崩潰了。 ※ 編輯: ggirls (114.136.150.153), 07/01/2016 11:09:06 ※ 編輯: ggirls (114.136.150.153), 07/01/2016 11:19:09

07/01 11:47, , 1F
哪些字無法解?
07/01 11:47, 1F

07/01 13:16, , 3F
請問我下面的觀念對嗎:
07/01 13:16, 3F

07/01 13:18, , 4F
以 python 的標準編碼 https://goo.gl/1dki9p
07/01 13:18, 4F

07/01 13:18, , 5F
以cp950就可以解big5。
07/01 13:18, 5F

07/01 13:20, , 6F
GB18030 就可以解 gbk, gb2312
07/01 13:20, 6F
※ 編輯: ggirls (114.136.150.153), 07/01/2016 13:30:23

07/01 13:29, , 7F
big5 不包含 "碁, 銹, 裏, 墻, 恒, 粧, 嫺"
07/01 13:29, 7F

07/01 13:30, , 8F
參見 wiki 有 cp950 與 big5 的差別比較
07/01 13:30, 8F

07/01 13:30, , 9F
07/01 13:30, 9F

07/01 13:34, , 10F
python 提供 big5, cp950, big5hkscs 實際上 big5 為cp950
07/01 13:34, 10F

07/01 13:35, , 11F
的子集,所以實際只有cp950, big5hkscs。這樣理解對嗎?
07/01 13:35, 11F

07/01 13:45, , 12F
我會這樣問,是因為我想提供使用者選擇編碼,對應到python
07/01 13:45, 12F

07/01 13:48, , 13F
的這些編碼方式。若有父子集關係,我就可以不用列出這三種
07/01 13:48, 13F

07/01 13:48, , 14F
全部選項。
07/01 13:48, 14F
※ 編輯: ggirls (114.136.150.153), 07/01/2016 14:33:33

07/01 15:35, , 15F
你的「所以」邏輯不對, 不過 Big 5 是 HKSCS 子集沒錯
07/01 15:35, 15F

07/01 15:36, , 16F
但仍然不建議這樣亂省略, 因為編碼表是有可能更新的
07/01 15:36, 16F

07/01 18:39, , 17F
題外話問問,為何要轉碼到 big5 這類編碼?
07/01 18:39, 17F

07/01 23:49, , 18F
總覺得這在PYTHON一直都很煩XD
07/01 23:49, 18F

07/02 07:42, , 19F
舊文件一推。老報錯缺字。
07/02 07:42, 19F
文章代碼(AID): #1NTTUXBr (Python)
文章代碼(AID): #1NTTUXBr (Python)