在我下面的python代码中
# coding: utf-8
# generate.py
my_locale = [
{
'tag':'test_tag_long__body',
'locale':'en_US',
'text': u"Hello,<br>\n"
u"\n"
u"<br>\n"
u"\n"
u"We’re contacting you.\n"
u"\n"
u"<br>\n"
u"\n"
u"Sincerely,<br>\n"
u"\n"
u"<br>\n"
u"\n"
u"Team<br>\n"
},
{
'tag':'test_tag_long__subject',
'locale':'en_US',
'text': 'Important information'
},
]
print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
print "<strings>"
for item in my_locale:
print "<string>"
print "<tag>" + item['tag'] + "</tag>"
print "<locale>" + item['locale'] + "</locale>"
print "<text><![CDATA["
print item["text"]
print "]]>"
print "</text>"
print "</string>"
print "</strings>"
当我以python generate.py
运行时,它运行正常,没有错误。但是,每当我通过管道传输或重定向输出时,都会出现错误
python generate.py | pbcopy
Traceback (most recent call last):
File "generate2.py", line 34, in <module>
print item["text"]
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 20: ordinal not in range(128)
我在这里错过任何重要的东西吗?
答案 0 :(得分:0)
尝试在过程开始时添加以下三行代码:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
我也遇到了您的问题:这是由于字符串中存在带重音符号的字母(或非ASCII字符):您的变量“ item [” text“] ”似乎是utf-8编码。 我尝试使用某些库提出的各种编码和解码方法。 在我看来,唯一有效的解决方案是我向您指出的解决方案。 我希望它也对您有用。