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

作者: ggirls (哥)   2016-07-01 10:38:22
我在這裡看到這篇文章(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
作者: alibuda174 (阿哩不達)   2016-07-01 11:47:00
哪些字無法解?
作者: eight0 (欸XD)   2016-07-01 12:52:00
作者: ggirls (哥)   2016-07-01 13:16:00
請問我下面的觀念對嗎:以 python 的標準編碼 https://goo.gl/1dki9p以cp950就可以解big5。GB18030 就可以解 gbk, gb2312
作者: s860134 (s860134)   2016-07-01 13:29:00
big5 不包含 "碁, 銹, 裏, 墻, 恒, 粧, 嫺"參見 wiki 有 cp950 與 big5 的差別比較https://goo.gl/vbx6pP
作者: ggirls (哥)   2016-07-01 13:34:00
python 提供 big5, cp950, big5hkscs 實際上 big5 為cp950的子集,所以實際只有cp950, big5hkscs。這樣理解對嗎?我會這樣問,是因為我想提供使用者選擇編碼,對應到python的這些編碼方式。若有父子集關係,我就可以不用列出這三種全部選項。
作者: uranusjr (←這人是超級笨蛋)   2016-07-01 15:35:00
你的「所以」邏輯不對, 不過 Big 5 是 HKSCS 子集沒錯但仍然不建議這樣亂省略, 因為編碼表是有可能更新的
作者: kenduest (小州)   2016-07-01 18:39:00
題外話問問,為何要轉碼到 big5 這類編碼?
作者: shadowjohn (轉角遇到愛)   2016-07-01 23:49:00
總覺得這在PYTHON一直都很煩XD
作者: ggirls (哥)   2016-07-02 07:42:00
舊文件一推。老報錯缺字。

Links booklink

Contact Us: admin [ a t ] ucptt.com