gpt4 book ai didi

Python UTF-8 Latin-1 显示错误字符

转载 作者:行者123 更新时间:2023-11-30 23:14:46 25 4
gpt4 key购买 nike

我正在编写一个非常小的脚本,可以将 latin-1 字符转换为 unicode(我是 Python 的初学者)。

我尝试了这样的方法:

def latin1_to_unicode(character):

uni = character.decode('latin-1').encode("utf-8")
retutn uni

它适用于不特定于 latin-1 集的字符,但如果我尝试以下示例:

print latin1_to_Unicode('å')

它返回 ? 而不是 å。对于其他字母,如 æø 也是如此。

谁能解释一下为什么会发生这种情况?谢谢

我的脚本中有 # -*-coding: utf8 -*- 声明(如果它对问题有影响的话)

最佳答案

您的源代码编码为 UTF-8,但您将数据解码为 Latin-1。不要这样做,您正在创建一个 Mojibake .

改为从 UTF-8 解码,并且不再编码print 将写入 sys.stdout,该文件已使用终端或控制台编解码器进行配置(在 Python 启动时检测到)。

我的终端配置为 UTF-8,因此当我在终端中输入 å 字符时,会生成 UTF-8 数据:

>>> 'å'
'\xc3\xa5'
>>> 'å'.decode('latin1')
u'\xc3\xa5'
>>> print 'å'.decode('latin1')
Ã¥

可以看到该字符使用了两个字节;当使用配置为使用 UTF-8 的编辑器保存 Python 源代码时,Python 从磁盘读取完全相同的字节以放入字节串中。

将这两个字节解码为 Latin-1 会生成与 Latin-1 编解码器相对应的两个 Unicode 代码点。

您可能想要研究 Unicode 和编码之间的差异,以及它与 Python 的关系:

关于Python UTF-8 Latin-1 显示错误字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28630080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com