有问题 UnicodeEncodeError('ascii',u'Phase \ u2013 II',6,7,'序数不在范围内(128)') 基本上我在这里做的是从excel表读取值 和工作表包含此格式的地址
Phase- II
所以想知道如何改变。
somestring = u'Phase \u2013 II'
到str
感谢
`
答案 0 :(得分:3)
Excel主要使用cp1252,所以试试这个:
>>> somestring.encode('cp1252', 'replace')
'Phase \x96 II'
>>> print somestring.encode('cp1252', 'replace')
Phase – II
这不会给你一个ascii字符串(因为你的unicode字符串包含它不能的非ascii字符),但它确实给你一个Excel将正确解释的字节字符串,例如你把它写入csv文件。
如果您只是想打印它以供显示,那么您需要知道用于显示文本的任何输出编码:我从空闲中复制了示例,至少在我的系统上显示cp1252,但是如果您在命令提示符下打印它可能有另一种编码生效。如果需要,请使用DOS chcp命令选择适当的编码,因为默认编码可能不支持该字符:
C:\>chcp
Active code page: 850
C:\>\python26\python
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> somestring = u'Phase \u2013 II'
>>> print somestring.encode('cp850', 'replace')
Phase ? II
>>>
使用'replace'参数进行编码意味着如果您设法获取任何无法解释为cp1252的字符,将被问号替换。