首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python ISO-8859-1编码

Python ISO-8859-1编码
EN

Stack Overflow用户
提问于 2011-11-13 16:27:35
回答 1查看 5.9K关注 0票数 4

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

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

代码语言:javascript
复制
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

有没有关于如何克服的想法?

EN

回答 1

Stack Overflow用户

发布于 2011-11-14 04:53:17

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

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

代码语言:javascript
复制
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),则字符串将按预期显示:

代码语言:javascript
复制
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'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8110496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档