Python 无法用big5编码“恒”字,decode()函数碰到F9DA(“恒”的big5码)报错

新手上路,请多包涵

执行:

"恒".encode("big5")

报错:

UnicodeEncodeError: 'big5' codec can't encode character '\u6052' in position 0: illegal multibyte sequence

执行:

b"\xf9\xda".decode("big5")

报错:

UnicodeDecodeError: 'big5' codec can't decode byte 0xf9 in position 0: illegal multibyte sequence

big5码表

阅读 9.7k
2 个回答

big5hkscs香港增补字符集

>>> '恒'.encode('big5hkscs')
b'\xf9\xda'
>>> b'\xf9\xda'.decode('big5hkscs')
'恒'
>>> 

最简单的方法,肯定是改成繁体字的“恆”咯;
麻烦点的方法,就是先用Unicode码位顶替无法编码的字符,解码后再自行处理,代码如下:

>>> foo = '恒恆'.encode(encoding='big5', errors='backslashreplace')
>>> foo
b'\\u6052\xab\xed'
>>> temp = foo.decode(encoding='big5', errors='backslashreplace')
>>> temp
'\\u6052恆'
>>> bar = repr(temp).replace('\\\\', '\\')
>>> bar
"'\\u6052恆'"
>>> eval(bar)
'恒恆'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题