UnicodeEncodeError-如何在python 3中输出俄语字符



我正在尝试使用pymongo查询MongoDB数据库中的数据。收藏中的一些文件具有俄语字符作为值,例如";Л"";或";ч";。每当我查询具有此类字符的文档时,我都会得到以下输出:

>>> pprint(db.mycollection.find_one({}))
{
"_id" : ObjectId('123456')
"name" : Traceback (most recent call last):
File "C:UsersuserAppDataLocalProgramsPythonPython39libencodingscp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to <undefined>
}

起初,我认为;name";值刚刚损坏。因此,我登录MongoDb Atlas/Compass并通过"_id";。(在上面的例子中,我会搜索ObjectId('123456'(,它成功地返回了用俄语字符表示名称值的文档。我已经在stackoverflow上四处查看,并尝试使用utf8和cp1252的不同编码和解码链,但我仍然收到相同的错误。有人对可能发生的事情有什么想法吗?

更新:程序在windows终端上运行,并正确显示俄语字符。然而,我想探索一下如何用崇高来构建这个。这是我用来编译的python3.sublimite-build:

{
"cmd": ["C:\Users\user\AppData\Local\Programs\Python\Python39\python.exe", "-u", "$file"],
"file_regex": "^[ ]*File "(...*?)", line ([0-9]*)",
"selector": "source.python"
}

另外,print(sys.stdout.concoding(输出cp1252编译,但它输出utf-8编译,在windows终端内。

在出色的构建中添加两行对我来说很有效:

{
"cmd": ["python", "-u", "$file"],
"file_regex": "^[ ]*File "(...*?)", line ([0-9]*)",
"selector": "source.python",
"encoding": "utf8",
"env": {"PYTHONIOENCODING": "utf-8", "LANG": "en_US.UTF-8"},
}

最新更新