CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

读写含中文的文本文件

楼主awei29()2003-11-03 16:45:06 在 Java / J2SE / 基础类 提问

想从一个含中文的文本文件中读内容,删掉其中的回车,存到另一个文本文件中。可是中文都变成了乱码。请高手指教小弟一下!!!!!! 问题点数:0、回复次数:6Top

1 楼LoveRose(旺旺)回复于 2003-11-03 16:52:56 得分 0

读出数据流到byte[]后转成String时用  
  new   String(byte[],   "UTF-8")的方法   或者"ISO-8859-1"编码!  
  不知道行不行?Top

2 楼bluesmile979(笑着)回复于 2003-11-03 17:02:00 得分 0

用Reader和Writer的相关类进行操作应该就可以的吧  
   
  代码贴出来看看吧,不太清楚你错哪里了Top

3 楼awei29()回复于 2003-11-03 17:25:57 得分 0

FileReader   text=new   FileReader(c:\\aaa.txt);  
  FileWriter   letters=new   FileWriter("c:\\ddd.txt");      
  String   uni;  
          while(!eof){  
              String   line=buff.readLine();  
   
              if(line==null)   eof=true;  
                  else  
                  {  
                      uni   =   new     String(line.getBytes(),"GB2312").trim();  
                      letters.write(uni);  
                  }  
          }  
   
  或者  
   
          int   inByte=text.read();  
          while(inByte!=-1){  
              if(inByte==10||inByte==13){}  
              else   letters.write(inByte);  
              inByte=text.read();  
          }  
   
  都不行:(Top

4 楼awei29()回复于 2003-11-03 17:40:51 得分 0

是不是我的源文件aaa.txt有问题,在记事本里可以正常显示,但是在写字板里中文就变成乱码了,这是别的程序生成的文件,不知道是什么编码格式,可还是得解析它Top

5 楼ruixj(小芮)回复于 2003-11-03 20:59:49 得分 0

忘了给出这个文件,不好意思,一定要帮个忙  
  package   Util;  
   
  /**  
    *   <p>Title:   </p>  
    *   <p>Description:   </p>  
    *   <p>Copyright:   Copyright   (c)   2003</p>  
    *   <p>Company:   </p>  
    *   @author   not   attributable  
    *   @version   1.0  
    */  
   
  public   class   ToolKit   {  
      public   static   String[]   split(String   str,   String   div,   boolean   isRegular)   {  
                String   result[]   =   null; //返回结果集合  
                String   substr;  
   
                if   (str   ==   null   ||   div   ==   null)   {  
                        return   (null);  
                }  
   
                if   ((str   =   str.trim()).length()   ==   0)  
                        return   (new   String[]{str});  
   
                int   cur   =   0,  
                                cnt   =   0,  
                                prv   =   cur,  
                                end;  
   
                while   (cur   <   str.length())   {  
   
                        if   ((end   =   str.indexOf(div,   cur))   <   0)   {  
                                end   =   str.length();  
                        }  
   
                        substr   =   str.substring(cur,   end);  
                        if   (isRegular)   {  
                                cnt   +=   stringCount(substr,   "(");  
                                cnt   -=   stringCount(substr,   ")");  
                        }  
                        if   (isRegular   ==   false   ||   cnt   ==   0   ||   end   ==   str.length())   {  
                                substr   =   str.substring(prv,   end);  
                                if   (result   ==   null)   {  
                                        result   =   new   String[]{new   String(substr)};  
                                }   else   {  
                                        int   len   =   result.length;  
                                        String   array[]   =   new   String[len   +   1];  
   
                                        for   (int   i   =   0;   i   <   len;   i++)  
                                                array[i]   =   result[i];  
   
                                        result   =   array;  
   
                                        result[len]   =   new   String(substr);  
                                }  
                        }  
                        cur   =   end   +   div.length();  
                        if   (isRegular   ==   false   ||   cnt   ==   0)  
                                prv   =   cur;  
                }  
                return   (result);  
        }  
        private   static   int   stringCount(String   str,   String   div)   {  
                      int   cnt   =   0;  
                      int   pos   =   0;  
                      while   ((pos   =   str.indexOf(div,   pos))   >=   0)   {  
                              pos   +=   div.length();  
                              cnt++;  
                      }  
                      return   cnt;  
              }  
          public   static   String[]   split(String   str,   String   div)   {  
              return   split(str,   div,   false);  
      }  
   
   
      public   static   void   main(String[]   args)   {  
      }  
  }Top

6 楼iLdf(七伤拳)回复于 2003-11-12 17:39:45 得分 0

windows记事本可以将文件内容保存为以下四种编码方式:  
  1、ANSI,不用说了  
  2、UNICODE,头两个字节内容为   0xFF   0xFE,对应为   UTF-16LE  
  3、UNICODE   big   endian,文字同样为UNICODE编码,只是字节顺序同2相反,以   0xFE   0xFF   开头,对应为   UTF-16BE  
  4、UTF-8,这种编码方式在<JAVA核心技术   I>上面有讲述,头三个字节为0xEF   0xBB   0xBF,   对应为   UTF-8  
   
  处理过程中先读出前三个字节内容判断出编码方式,然后再进行转换。Top

相关问题

  • 读取含有中文的文本文件出现乱码?(急)
  • 怎样读取文本文件中的中文?
  • 从文本文件中读取中文产生的乱码
  • 如何从文本文件中读取出中文字符串
  • 读入文本文件中的中文为乱码?
  • 在APPLET读文本文件
  • 读取文本文件
  • 如何读文本文件?
  • 读取文本文件?
  • 怎样读文本文件?

关键词

  • 编码
  • 中文
  • 文件
  • 内容
  • unicode
  • null
  • inbyte
  • 文本文件
  • uni
  • cnt

得分解答快速导航

  • 帖主:awei29

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo