今天碰到一个中文乱码的问题:收到客户端的消息后,服务器进行了处理之后显示在浏览器里面是乱码。
检查一遍代码,里面发现服务器端在解析消息的时候用了String的getBytes()方法,但是没有明确的指定字符编码。
这是乱码产生的一个根源。
我们遵循的思路就是在消息的产生,处理,显示整个一条路上都用UTF-8。这种基本思路可以保证多语言环境下不会产生乱码。
getBytes()默认会调用系统的编码格式,如果我们的java程序没有指定,那就会用操作系统的。操作系统的编码方式就比较杂乱了。
一种解决问题的办法就是在我们java程序启动的时候指定编码格式:
$JAVA_HOME/bin/java
-Dfile.encoding=UTF-8 \
-Dsun.jnu.encoding=UTF-8 \ -jar OurApp.jar
以此来保证服务器端的处理都是UTF-8的天空下进行。