python-3.x – 如何在Python3中打印()一个字符串,没有例外?
看似简单的问题:如何在
Python3中打印()字符串?应该是一个简单的:
print(my_string) 但这不起作用.根据my_string的内容,环境变量和您使用的操作系统将引发UnicodeEncodeError异常: >>> print("u3423") Traceback (most recent call last): File "<stdin>",line 1,in <module> UnicodeEncodeError: 'ascii' codec can't encode character 'u3423' in position 0: ordinal not in range(128) 是否有一种干净的便携方式来解决这个问题? 扩展一点:这里的问题是Python3字符串包含Unicode编码字符,而终端可以有任何编码.如果你很幸运,你的终端可以处理字符串中包含的所有字符,一切都会好的,如果你的终端不能(例如有人设置LANG = C),那么你得到一个例外. 如果在Python3中手动编码字符串,则可以提供忽略或替换不可编码字符的错误处理程序: "u3423".encode("ascii",errors="replace") 对于print()我没有看到插入错误处理程序的简单方法,即使有,一个简单的错误处理程序似乎是一个可怕的想法,因为它会修改数据.一个条件错误处理程序可能会工作(即检查isatty()并根据该做什么来决定),但是看起来非常麻烦只是为了打印()一个字符串,我甚至不确定它会不会在某些情况下失败. 一个现实世界的例子,这个问题就是这个例子: Python3: UnicodeEncodeError only when run from crontab 解决方法
设置PYTHONIOENCODING =< encoding>:< error_handler>例如., $PYTHONIOENCODING=utf-8 python your_script.py >output-in-utf-8.txt 在您的情况下,我将您的环境(LANG,LC_CTYPE)配置为接受非ascii输入: $locale charmap (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |