django Python - wierd UnicodeEncodeError

5n0oy7gb  于 2023-07-01  发布在  Go
关注(0)|答案(1)|浏览(91)

我在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”编解码器是从哪里来的呢???
我无法访问配置,但我需要一个程序内解决方案。
多谢了

20jt8wwn

20jt8wwn1#

尝试这样的事情

import io
import sys

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')

print("Hello 高欧凡")

例如:

相关问题