在Java中经常会遇到字符串编码错误的情况,例如我们在eclipse中使用Gerrit插件提交comment或者push commit的信息时,填写中文都会导致Gerrit服务器返回错误,这是因为我们从eclipse端返回字符串默认编码是GBK,但Gerrit服务器只能接受UTF-8的编码,该如何处理?
首先,想到了修改Gerrit插件,对所有涉及到的字符串都采用下面的方式:
new String(String.getBytes("UTF-8"), "UTF-8")
但由于涉及面比较广,逐个修改工作量很大,而且容易造成疏漏。
我们需要了解到这编码为GBK的根本问题,这跟我们的开发环境有关(Windows Server 2003, 中文系统),于是在网上找到了如下的解决办法:设置当前环境变量。
但是这也会导致一个问题,计算机上的所有Java环境编码都变成了UTF-8,于是考虑设置eclipse的默认编码。
在eclipse中的修改eclipse.ini文件,增加-Dfile.encoding属性即可改变当前eclipse的默认字符串编码