python - 如何在Python中解码日元符号?

标签 python encoding

我得到了一个包含日元符号(¥)的字节数据。这似乎表示为\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/

相关文章:

java - UTF-8 编码不适用于 Eclipse Java 应用程序

python - 为什么pickle __getstate__ 接受它首先需要__getstate__ 进行pickle 的实例作为返回值?

python - exec 命令内的多处理

python - Unicode 到字符串 Python 2

python - 将附件添加到电子邮件消息会引发 TypeError : set_text_content() got an unexpected keyword argument 'maintype'

file - 非 ANSI 文件的 TStringList 行为

python - 如何在 fastai 中改变混淆矩阵的大小?

python - 当我在 hmmlearn 包中使用 model.score 时,为什么会出现 "' diag' mix covars must be non-negative"错误?

javascript - 在文本对象 HTML 中定义允许的字符

ios - 十六进制 - 什么编码?