有个项目,服务器是AIX,客户端上传的GBK编码的文件,在服务器上处理时经常会出现不确定的部分乱码问题,在代码中怎么转码都无济于事,而从主机上把文件下载到本地,再用文本编辑器打开,没有乱码,可以排除文本文件本身存在乱码的可能性。最后查看主机默认字符集是zh_CN.IBM-eucCN。
愚分析认为:IBM-eucCN虽然兼容GBK,但是支持的汉字比较少,有些字无法正常显示,导致文本处理出现部分乱码。
于是在JAVA启动命令行中指定编码方式: -Dfile.encoding=GB18030,再测试,问题解决。我接触的项目中,用Solaris居多,AIX相对较少,所以出现该问题时,没有往OS层面仔细考虑或者主观地认为文件本身无乱码,那么出现乱码问题肯定是文件处理程序造成的,导致浪费不少时间。