进入问题之前,我想通知我看到很多关于此问题的StackOverflow问题和python bug,但我无法找到引起该问题的根本原因
我在centos计算机中收到UnicodeEncodingError。 Python不是内置在计算机中的,而是具有所需python版本(3.6.7)的虚拟环境已在其他位置构建并复制到此处。因此,在启动服务器时,我们将激活虚拟环境并启动服务器。
但是在控制台中记录或打印任何Unicode字符时,我遇到Unicode编码错误,类似这样
print("\u6211\u7684\u7535\u8111\u603b\u662f\u51fa\u73b0Windows\u9700\u8981\u6fc0\u6d3b")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 56-63: ordinal not in range(128)
我通过python终端验证了以下内容
所有人都拥有utf-8。
我经历了一些解决方案,要求修改LC_ALL或在环境变量中添加PYTHONIOENCODING,但由于环境是生产环境,因此我不确定在不知道副作用的情况下进行修改。
我想知道如何解决这个问题?
谢谢
如果您在空闲状态下运行它,则可以... ...>
我会
强烈
建议只使用print(repr(string_that_might_have_unicode))
,因为那样可以保证可打印的ASCII表示形式...而且没有比崩溃应用程序更糟糕的原因,因为您正尝试打印一些调试信息...您也可以尝试在打印前手动将其设置为encode
print(my_unicode_string.encode("utf8"))
那个
might
可以在某些终端上工作...但是实际上...只要打印repr,除非您向用户显示该代理(但是由于您谈论服务器,所以我认为这不是终端客户端应用程序,但是调试正在打印的信息(并重定向到日志文件?))