springboot jar采用bat运行时,下载文件的编码不正常
场景描述:
windows环境,从Mongodb中读取一个json文档,以文本方式下载到本地的功能。下载时代码中已设置为UTF-8编码response.setContentType(“text/plain;charset=UTF-8”)。
程序在IDEA中运行时正常,下载的文件为UTF-8编码(用Notepad++打开文件,右下角可以看到编码类型),如下图:
br>
程序打包成jar包用bat运行,下载的文件为gb2312编码,如下图:
解决方法:
1、程序中涉及文件流操作,尽量指定编码,如:Reader r = new InputStreamReader(new FileInputStream(“myfile”), StandardCharsets.UTF_8);
2、设置平台(jvm)默认编码:-Dfile.encoding,这样jvm的读写文件,即流的编码默认设置为utf-8
最终结果,在bat修改如下:
# 设置cmd控制台显示字符编码为utf-8(默认一般为GBK(936),中文显示可能会乱码)
chcp 65001
# 运行jar时设置平台编码为utf-8
start java -Dfile.encoding=utf-8 -jar myjar.jar
Comments are currently closed.