如何解决Python string.decode() 在作为 node.js 的子进程生成时抛出错误
我希望我的 python 脚本能够解码 utf-8 编码的字符串。从控制台和 python 解释器调用时,该脚本工作正常。但是,当我将脚本作为 node.js 子进程调用时,出现以下错误:
Traceback (most recent call last):
File "test.py",line 1,in <module>
print(b'\xe1\x83\x90'.decode("utf-8"))
File "C:\Program Files\Python38\lib\encodings\cp1252.py",line 19,in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u10d0' in position 0: character maps to <undefined>
我的 node.js 文件 (index.js) 如下所示:
const spawn = require("child_process").spawn;
const python = spawn("python",["test.py"]);
python.stdout.pipe(process.stdout);
python.stderr.pipe(process.stdout)
我的 python 文件 (test.py) 如下所示:
print(b'\xe1\x83\x90'.decode("utf-8"))
编辑:
工作代码:
import sys
sys.stdout.reconfigure(encoding='utf-8')
print(b'\xe1\x83\x90'.decode())
我们可以使用print(sys.stdout.encoding)
来检查sys.stdout的编码。
出于某种原因,stdout 的编码更改为“cp1252”(我假设是 node.js?),而这行代码将其更改回“utf-8”。当 stdout 使用 cp1252 编码时打印 utf-8 字符串是问题所在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。