我用java来读dat数据文件。在WIN平台上面通过调试发现没有乱码的。然后我上传到LINUX服务器上面就出现了乱码了
打印出来发现:4555 /www/client/WebRoot/ ���� �� 中国人 
这里面的乱码就是要从dat中读取的数据内容了。
请问一下大家是什么原因造成的呢?

解决方案 »

  1.   

    看下你的编码设置,可能是编码问题,具体也不是什么很清楚,没把JAVA代码用到LINUX上过。
      

  2.   

    之前也遇到过这样的问题。在WIN平台上面是正常的跑到LINUX平台就会有乱码
      

  3.   

    LINUX和WINDOWS的汉字编码规范不同(具体是什么我忘了)
      

  4.   

    你把你所用到的字符编码统一更改为UTF-8试试。包括JSP,Java文件保存格式,Java类文件保存格式。你的dat文件也使用UTF-8来进行保存(记事本在另存为对话框的最下面的下拉列表框中可以选择,如果是别的编辑器如UltrEdit,EditPlus之类也有更改字符编码集的设置)。总之,但凡能想到的,可以设置字符格式的地方都统一更改为UTF-8。
      

  5.   

    那个DAT数据文件是我从网上DOWN下来的。是IP库。的
      

  6.   

    是因为你本地的local的编码和服务器上的不一样,建议不管在本地运行还是服务器都要指定编码读取文件。不推荐直接用FileReader去读取文件,请参见:
      http://www.techq.com/source/java/JDK/1.6.0/java/io/FileReader.html
    FileReader里面竟然没有指定读取的编码,所以只会以OS的缺省编码读取,比如你的数据文件是以UTF-8编码,但你的OS是简体中文GBK编码,那么就会出现问题。推荐用 new InputStreamReader(new FileInputStream(mydata), "UTF-8");的方式读取。