Script 插件如何修改 Python3 的输出编码

print("测试")

返回结果

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

查询输出编码

import sys
print(sys.version)
print(sys.stdout.encoding)

输出

3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
US-ASCII

可以查明是输出编码的问题,但如何修改 Script 插件里的输出编码?

环境为 OS X 10.11.5
在终端输出没有问题

已找到暂时性的解决方案

在文件顶部修改输出编码,添加如下

import sys
import io

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

输出正常

>>> print("测试")
测试
[Finished in 0.057s]

但缺点是必须每次声明,有没有更加长久的解决方案?

参考来源:Github Script Issue #738

1赞