[问题] 又是中文编码的问题

楼主: 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