当前位置:  技术问答>java相关

在读入文件时,英文可以正常,而中文有的却显示了乱码,请帮助~

    来源: 互联网  发布时间:2015-09-06

    本文导语:  我在读出文件的时候用了以下的方法,可是对英文的读出都很正常,而对中文的读出却出现了问题,有的中文显示了乱码,请大虾们帮忙看什么地方需要修改,谢谢!  public String openfile(String str)   {//str传入了文件...

我在读出文件的时候用了以下的方法,可是对英文的读出都很正常,而对中文的读出却出现了问题,有的中文显示了乱码,请大虾们帮忙看什么地方需要修改,谢谢!
 public String openfile(String str)
  {//str传入了文件名和路径,
      String strd=new String();
      int  byteread;
      byte  []data=new byte[2];
      try
      {
         FileInputStream inputfile=new FileInputStream(str);
         DataInputStream inputdata=new DataInputStream(inputfile);
         while((byteread=inputdata.read(data))!=-1)
         {
           strd=strd+new String(data,0,byteread);

         }
         inputdata.close();
      }
      catch(Exception erw){}
     return strd;
//返回了读入的字符
  } 
我读入的是一般的文本文件.txt文件!

|
用FileReader并指明编码方式
InputStreamReader is = new InputStreamReader(new FileInputStream("youfile.txt"),"GBK");

|
我觉的可以这样:
FileInputStream in = new FileInputStream("d:\test.txt");
DataInputStream data = new DataInputStream(in);
byte[] b = new byte[data.available()];
data.read(b);
String str = new String(b);
如果需要解析汉字,可使用:
byte[] temp = str.getBytes("iso8859-1");
String sString = new String(temp);
可以解决问题
当然其实解决问题的方法很多,自己可以看看Java对于流的处理就知道怎么办了:)

|
有的中文显示了乱码,是因为你每次取的是两个字节,对于英文是没问题的,但对于中文,一旦错位了一个字节(比如它前面的英文字符为单数),就会出现乱码了。
我觉得读取文件最好用字符流的方法。再好好看看关于I/O的内容吧。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有没有在读linux 0.11源代码的同志啊。
  • 在读较大文件(10M-100M)时,每次多几个byte,效率最高(use java)
  • CPU在读NAND FLASH时会访问每个page的校验区吗?
  • 超时的时候就停止读终端问题,为什么还在读终端啊?
  • 求助:C++在读文件时,调用grep


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3