js 调用python脚本 python脚本回传print的汉字是乱码
时间: 2023-08-11 20:56:42 浏览: 108
当在JavaScript中调用Python脚本并且Python脚本的print语句输出包含汉字时,可能会出现乱码问题。这是由于Python和JavaScript默认使用不同的字符编码。
为了解决这个问题,你可以在Python脚本中使用`sys.stdout.buffer.write()`来输出原始字节,并在JavaScript中使用`TextDecoder`来解码这些字节。
下面是一个示例代码:
Python脚本(your_script.py):
```python
import sys
import io
# 设置输出流的编码为UTF-8
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
# 打印包含汉字的文本
print('你好,世界!')
```
JavaScript代码:
```javascript
const { PythonShell } = require('python-shell');
const { TextDecoder } = require('util');
PythonShell.run('your_script.py', null, function (err, result) {
if (err) throw err;
// 将字节数组转换为字符串
const decoder = new TextDecoder('utf-8');
const output = decoder.decode(result[0]);
console.log(output); // 输出:你好,世界!
});
```
通过这种方式,你可以在JavaScript中正确地接收和显示Python脚本中打印的汉字。确保在Python中使用UTF-8编码输出,并在JavaScript中使用相应的解码器进行处理。
阅读全文