UnicodeEncodeError帮助('ascii',u'Phase\u2013 II',6,7,'ordinal not in range(128)')

2024-09-29 02:23:19 发布

您现在位置:Python中文网/ 问答频道 /正文

有问题吗 UnicodeEncodeError('ascii',u'相位\u2013 II',6,7,'序号不在范围内(128)') 基本上我在这里做的是从excel表中读取值 和工作表包含此格式的地址

Phase- II

所以想知道如何改变

^{pr2}$

到str

谢谢

`


Tags: 地址格式asciiexceliistrphasepr2
1条回答
网友
1楼 · 发布于 2024-09-29 02:23:19

Excel主要使用cp1252,请尝试以下操作:

>>> somestring.encode('cp1252', 'replace')
'Phase \x96 II'
>>> print somestring.encode('cp1252', 'replace')
Phase – II

这不会给你一个ascii字符串(因为你的unicode字符串包含非ascii字符,它不能),但它确实提供了一个字节字符串,如果你把它写入csv文件,Excel将正确解释它。在

如果您只想打印它以供显示,那么您将需要知道用于显示文本的任何内容的输出编码:我从idle复制了这个示例,至少在我的系统上会显示cp1252,但是如果您在命令提示符下打印它,则可能会有另一个有效的编码。如果需要,请使用DOS chcp命令选择适当的编码,因为默认编码可能不支持该字符:

^{pr2}$

使用“replace”参数进行编码意味着,如果您设法得到任何不能解释为cp1252的字符,那么这些字符将被问号代替。在

相关问题 更多 >