H5W3
当前位置:H5W3 > 其他技术问题 > 正文

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码表

回答:

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)
'恒恆'

本文地址:H5W3 » Python 无法用big5编码“恒”字,decode()函数碰到F9DA(“恒”的big5码)报错

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址