首先问题场景:使用java开发的web项目,三个客户端程序,都部署在linux下。三个客户端和war包都是采用utf编译,三个客户端已可运行jar包的形式运行。在客户端程序调用java的process执行命令后将输出通过流发送给服务器端,在服务器端将获取到的数据写入文件中。后期读取文件的内容出现乱码。
问题分析:首先判断process读取数据是否乱码、再判断客户端发送给服务器的是不是乱码、再判断服务器写入文件是否乱码、再判断服务器从文件中读取是否乱码。
解决方法:1、当发现process读取数据乱码时,需要查看客户端程序(可运行jar包)所在linux的编码格式,使用locale命令查看。我这里的是en_US.UTF-8,然后我把它该成zh_CN.GB18030,process读取数据的时候不要指定字符编码格式。问题解决!
2、当发现是客户端发送给服务器是乱码的时候,需要确认服务器和客户端程序所在环境的编码是否一致,我把服务器的编码也改成GB18030,问题解决!
3、当发现是后面两个的问题时,需要确定写文件和读文件的格式转换,如果服务器和客户端的都是一致的,gb18030.这里读写文件都不需要指定编码格式,直接操作即可!
总结:写的不是很详细,如果有什么可以在线留言