本文主要是介绍JSON parse error: Invalid UTF-8 start byte 0xb8; 异常,windows环境下cmd窗口运行jar包中文参数乱码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.springBoot项目,本地idea中运行没问题,部署到线上服务器(window服务器)后,采用postman测试对于json传参中某些汉字出现时报错
查看后台日志,发现问题原因
2.在项目中使用到token拦截器,对于json格式请求参数,使用到request包装类RequestWrapper继承HttpServletRequestWrapper,因为inputStrream流只能读取一次,在拦截器中获取到值进行验证后,在controller中就获取不到值了,所以使用RequestWrapper将数据保存。但是windows环境下cmd运行jar包默认使用GBK编码格式,而在运行程序时RequestWrapper读取流的时候默认使用的是运行环境的编码格式也就是GBK,而我们一般使用的utf-8格式,所以会出现JSON parse error: Invalid UTF-8 start byte 0xb7 异常或者中文参数乱码
3.在cmd下启动jar包时可以指定编码格式
java -Dfile.encoding=UTF-8 -jar xxxxxxxxxxxxxx.jar
4.也可以在代码中指定读取流的编码格式,将RequestWrapper类里所有的 Charset.defaultCharset() 替换为 StandardCharsets.UTF_8
这篇关于JSON parse error: Invalid UTF-8 start byte 0xb8; 异常,windows环境下cmd窗口运行jar包中文参数乱码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!