IDEA 直接点击运行执行正常,命令行下面执行Jar包出现部分乱码的情况。
解决方案如上:
有个Springboot项目为了测试方便,模型类用中文作为字段属性,封装成Odata格式,在通过Springboot发布并打成jar包。
通过命令行启动jar包里面的Springweb服务,访问的时候开始进入服务http://desktop-6vf91n9:8080/exp.svc/ 中文字段就乱码,通过application.properties编码,进入服务不乱码了。
http://desktop-6vf91n9:8080/exp.svc/Expsummaries 查看实体数据也不会乱码了。但是其他应用调用这个数据源的时候会报错,提示找不到中文命名的字段。后面打开元数据http://desktop-6vf91n9:8080/exp.svc/$metadata 看一下,发现元数据的中文字段还是乱码,修改application.properties,和IDEA的项目编码都没用。折腾了一天,后面对比一下原有的Odata-example项目是用IDEA内置启动测试的,再启动试下,发现他的元数据就不乱码。再执行这边的jar包还是乱码。那解决思路就是不执行jar包,通过IDEA直接执行,发现元数据竟然不乱码了。那也就是说代码是没问题的,是环境的差异。网上搜索发现有类似情况的乱码产生的原因在于 执行jar包的时候没有制定编码所致。
解决办法如下
java -Dfile.encoding=utf-8 -jar abc.jar 就可以避免乱码。(-Dfile.encoding=utf-8)