我在centos服务器中使用Python 3.6,我试图在django的范围之外编写一个脚本(尽管它已经安装)。
所有脚本需要做的是某种日志记录,但它可能有unicode字符。问题是,无论我尝试什么解决方案,都会弹出相同的错误:
<class 'UnicodeEncodeError'>
“ascii”编解码器无法对位置6-8中的字符进行编码:序号不在范围内(128)
我的代码(这只是一个测试程序文件):
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys, os, traceback, time
sys.path.append(os.path.expanduser("~") + "/EF5/LIB")
import EF # Irrelevant for the purpose of this test. Though removing it did not help!
print("Content-Type: text/plain;charset=utf-8\n")
def tester(n):
b = n.encode('utf-8')
s = b.decode('utf-8')
return s + "!"
try:
print("Hello 高欧凡")
except Exception as err:
print(type(err))
print(err)
print(traceback.format_exc())
I have tried to use print(tester("Hello 高欧凡")) so to encode/decode forcing utf-8.
我试着把它留给bytes-array(输出是b '\x..\x..'等)
环境变量PYTHONIOENCODING=“utf-8”
我已经尝试了sys.stdin.encoding=“utf-8”(给出错误!)
我已经尝试了sys.stdout.encoding=“utf-8”(给出错误!)
我已经尝试导入编解码器并使用这个(在我的情况下与str的行为相同)。
有没有其他的解决办法……?如果我所有的设置都指向utf-8,而Python 3默认使用utf-8,那么这个“ascii”编解码器是从哪里来的呢???
我无法访问配置,但我需要一个程序内解决方案。
多谢了
1条答案
按热度按时间20jt8wwn1#
尝试这样的事情
例如: