我得到了一个包含日元符号(¥)的字节数据。这似乎表示为\xc2\xa5
。
但是,我无法解码日元符号。例如,
yen = b"\xc2\xa5"
type(yen) # return bytes
yen.decode("utf-8") # return UnicodeEncodeError: 'ascii' codec can't encode character '\xa5' error
import chardet
chardet.detect(yen) # return {'confidence': 0.73, 'encoding': 'windows-1252'}
yen.decode("windows-1252") # return another UnicodeEncodeError: 'ascii' codec can't encode characters error
我拥有的字节数据在其他方面可以解码为utf-8
。无论您使用什么编码,只有日元符号无法解码。
那么我该如何解码呢?
最佳答案
问题来自终端和 shell 中的设置。具体来说,为了使解码按预期工作,您的 sys.stdout.encoding
应返回 UTF-8
。
如果您没有获得 UTF-8
,那么您应该检查 $LANG
变量。就我而言,它返回 en_US.UTF-8
,但由于我的 ~/.zprofile
没有 export
关键字,sys .stdout.encoding
返回 US-ASCII
,而不是 UTF-8
。因此,您应该在 ~/.zprofile
(或 ~/.bash_profile
)中设置为:
export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
现在您应该从 sys.stdout.encoding
获取 UTF-8
。
有关在 macOS 上的 shell 和终端中设置正确区域设置的更多信息,请查看 the following question .
关于python - 如何在Python中解码日元符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41010694/