解決方案如上:java
有個Springboot項目爲了測試方便,模型類用中文做爲字段屬性,封裝成Odata格式,在經過Springboot發佈並打成jar包。web
經過命令行啓動jar包裏面的Springweb服務,訪問的時候開始進入服務http://desktop-6vf91n9:8080/exp.svc/ 中文字段就亂碼,經過application.properties編碼,進入服務不亂碼了。app
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)