python输出重定向/管道失败
python输出重定向/管道失败
在我的以下Python代码中:\n# coding: utf-8\n# generate.py\nmy_locale = [\n {\n \'tag\':\'test_tag_long__body\',\n \'locale\':\'en_US\',\n \'text\': u\"Hello,
\\n\"\n u\"\\n\"\n u\"
\\n\"\n u\"\\n\"\n u\"We’re contacting you.\\n\"\n u\"\\n\"\n u\"
\\n\"\n u\"\\n\"\n u\"Sincerely,
\\n\"\n u\"\\n\"\n u\"
\\n\"\n u\"\\n\"\n u\"Team
\\n\"\n },\n {\n \'tag\':\'test_tag_long__subject\',\n \'locale\':\'en_US\',\n \'text\': \'Important information\'\n },\n ]\nprint \"\"\nprint \"
python generate.py | pbcopy Traceback (most recent call last): File "generate2.py", line 34, inprint item["text"] UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 20: ordinal not in range(128)
\n我是否遗漏了什么重要的东西?
问题出现的原因是字符串中存在有重音字母(或非ASCII字符),导致无法正常输出或重定向。解决方法是在程序的开头添加以下三行代码:
import sys reload(sys) sys.setdefaultencoding('utf8')
这段代码可以解决问题,因为它将系统的默认编码设置为UTF-8,从而确保能够正确处理包含重音字母或非ASCII字符的字符串。
需要注意的是,这种解决方法并不被推荐。更好的替代方案是设置PYTHONIOENCODING环境变量。关于这个问题的背景信息可以在这里找到。
总之,为了解决Python在输出重定向或管道时出现的编码问题,可以尝试在程序开头添加上述代码或设置PYTHONIOENCODING环境变量。