作者ggirls (哥)
看板Python
标题[问题] 又是中文编码的问题
时间Fri Jul 1 10:38:22 2016
我在这里看到这篇文章(
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
1F:→ alibuda174: 哪些字无法解? 07/01 11:47
3F:→ ggirls: 请问我下面的观念对吗: 07/01 13:16
5F:→ ggirls: 以cp950就可以解big5。 07/01 13:18
6F:→ ggirls: GB18030 就可以解 gbk, gb2312 07/01 13:20
※ 编辑: ggirls (114.136.150.153), 07/01/2016 13:30:23
7F:→ s860134: big5 不包含 "碁, 锈, 里, 墙, 恒, 粧, 嫺" 07/01 13:29
8F:→ s860134: 参见 wiki 有 cp950 与 big5 的差别比较 07/01 13:30
10F:→ ggirls: python 提供 big5, cp950, big5hkscs 实际上 big5 为cp950 07/01 13:34
11F:→ ggirls: 的子集,所以实际只有cp950, big5hkscs。这样理解对吗? 07/01 13:35
12F:→ ggirls: 我会这样问,是因为我想提供使用者选择编码,对应到python 07/01 13:45
13F:→ ggirls: 的这些编码方式。若有父子集关系,我就可以不用列出这三种 07/01 13:48
14F:→ ggirls: 全部选项。 07/01 13:48
※ 编辑: ggirls (114.136.150.153), 07/01/2016 14:33:33
15F:→ uranusjr: 你的「所以」逻辑不对, 不过 Big 5 是 HKSCS 子集没错 07/01 15:35
16F:→ uranusjr: 但仍然不建议这样乱省略, 因为编码表是有可能更新的 07/01 15:36
17F:→ kenduest: 题外话问问,为何要转码到 big5 这类编码? 07/01 18:39
18F:推 shadowjohn: 总觉得这在PYTHON一直都很烦XD 07/01 23:49
19F:→ ggirls: 旧文件一推。老报错缺字。 07/02 07:42