tomcat设置defaultCharset

最近项目中java需要和C++端交互,底层都是socket,调用接口的时候,单元测试没问题,但是放到tomcat运行发现响应的数据乱码,不是页面展示乱码,是使用C++接口库响应的就是乱码,于是一步步跟踪下去,发现在解析字节数据到字符串的时候使用的就是new String(byte[] data),
这里有个问题就是该构造函数的编码问题!
可以使用Charset.defaultCharset().name()打印出来看看,结果一看,junit中打印出来是UTF-8,tomcat中运行的时候是GBK!
这里需要设置下tomcat的编码,在tomcat8的catalina.bat中找到set "JAVA_OPTS=%JAVA_OPTS%,两处后面都加上 -Dfile.encoding=UTF-8;这里改完后单独启动tomcat没问题了,如果是在eclipse中启动tomcat默认编码还是GBK,这里需要如下修改eclipse里面tomcat启动参数
Run-RunConfiguration-ApacheTomcat-tomcat8-Arguments,在VM atguments最后加上Dfile.encoding=UTF-8,启动OK!

猜你喜欢

转载自wyh-d-void.iteye.com/blog/2263095
今日推荐