gpt4 book ai didi

Python ISO-8859-1 编码

转载 作者:行者123 更新时间:2023-11-28 16:50:37 25 4
gpt4 key购买 nike

在处理 ISO-8859-1/Latin-1 字符集时,我在 Python 中遇到了一个巨大的编码问题。

当使用 os.listdir 获取文件夹的内容时,我得到了以 ISO-8859-1 编码的字符串(例如:''Ol\xe1 Mundo''),但是在Python 解释器将相同的字符串编码为不同的字符集:

In : 'Olá Mundo'.decode('latin-1')
Out: u'Ol\xa0 Mundo'

如何强制 Python 将字符串解码为相同的格式?我已经看到 os.listdir 正在返回正确编码的字符串,但解释器不是('á' 字符对应于 ISO-8859-1 中的 '\xe1',而不是 '\xa0' ):

http://en.wikipedia.org/wiki/ISO/IEC_8859-1

关于如何克服的任何想法?

最佳答案

当您在 python2 交互式 session 中输入非 unicode 字符串文字时,系统将为它假定默认编码。

看来您使用的是 Windows,因此默认编码可能是“cp850”或“cp437”:

C:\>python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdin.encoding
'cp850'
>>> 'Olá Mundo'
'Ol\xa0 Mundo'
>>> u'Olá Mundo'.encode('cp850')
'Ol\xa0 Mundo'

如果将代码页更改为 1252(大致相当于 latin1),字符串将按预期显示:

C:\>chcp 1252
Active code page: 1252

C:\>python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdin.encoding
'cp1252'
>>> 'Olá Mundo'
'Ol\xe1 Mundo'

关于Python ISO-8859-1 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110496/

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