问题汇总与解答
问题1
在jenkins的window控制节点上修改编码为utf-8,并输出中文信息,结果显示为乱码
原因
window节点的环境变量未设置正确,节点信息显示为GBK编码
解决方法
在节点中添加环境变量之后启动agent进行连接,JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
再次查看节点编码为UTF-8
命令行输出中文字体为正常文字
问题2
python程序读取到的编码为gbk,与之前更改后的编码不一致导致中文乱码
原因
python默认读取系统的本地编码,故即使cmd编码改变,但系统的编码未改变,所以修改cmd的编码并不能影响python读取到的编码格式
解决方法
运行程序前使用set PYTHONUTF8=1是python的程序的编码始终为utf-8的格式
测试用job配置
job配置
:: 修改编码为UTF-8
chcp 65001
:: 设置python读取的编码始终为UTF-8
set PYTHONUTF8=1
:: 创建虚拟环境
python -m venv venv
:: 拷贝测试脚本
copy ..\..\learn_invoke.py .
:: 使用虚拟环境运行测试脚本
.\venv\Scripts\activate.bat && pip install invoke -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple && python learn_invoke.py
测试脚本
import io
import sys
import invoke
def main():
print(f"当前终端编码为: 输入({sys.stdin.encoding}),输出({sys.stdout.encoding})")
command = 'echo "你好,世界!!!"'
return invoke.run(command=command)
if __name__ == "__main__":
main()