Java读取文件中含有中文的解决办法

原创 2003年08月18日 10:00:00

                    Java读取文件中含有中文的解决办法

       折磨了一天的问题,终于在黄昏的时候解决了,现在一吐为快。

       众所周知,java的中文问题一直是一个老大难的问题,这个现象可以在csdnjava论坛里关于中文乱码的提问率就可以了解到,甚至软件巨人IBM专门开辟了一个解决中文问题的专区,作为一个俗人(一直梦想希望想金凯利那样成为一个“冒牌天神”,只是一直没有成功,也许是因为上帝不照顾中国吧),我也为同意的问题困扰,好在今天解决了。

       随着我对.net平台的彻底放弃(只是生活所迫,毕竟我还要生活),将原有的资源转到Java平台上来是我当前的一个重要任务之一,说到这里,不得不承认.net对中文问题解决的很好,虽然偶尔也会出现乱码。

       问题是这样的,我的box(http://www.ibeyond.org/box/)原来是使用asp.net写的(当时只是为了尝试新的技术),当时为了数据的可移植性我放弃了使用数据库,将全部数据保存为UTF8编码的文本文件,在.net中读取这种文件秩序只要指定打开文件的编码方式,中文问题就可以避免。但是按照我以前的思维,java中不是这么作的,java中都是先读取后转换的,最后的结果证明我错了,看来经验主意害死人呀。

File f=new File((new BoxConfig()).getBaseDir()+"Data//"+request.getParameter("ID")+".inc");<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

BufferedReader reader = new BufferedReader(new FileReader(f));

String line;

while((line=reader.readLine())!=null){

    strContent+=line;

}

这是我最初的代码f就是我要读取的UTF-8格式的文本文件,这一天中经过了无数次的尝试,包括new String(strContent.getBytes("UTF-8"))(其中尝试了N种编码转换),System.setProperty("file.encoding","UTF-8")(其中指定了N种编码转换),都失败了,其中甘苦相信各位经历过被程序折磨的各位看官都有所了解,在此略过。终于在Google中无数次查询中得到了一个后来被证明很重要的一条信息“读取文件时指定字符编码”,一语点醒梦中人,.net中不就是这么实现的吗?走了一圈弯路终于解决了这个问题。

File f = new File("E://eclipse//workspace//box//Data//<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2003-3-7-100.inc");

InputStreamReader  read = new InputStreamReader (new FileInputStream(f),"UTF-8");

BufferedReader reader=new BufferedReader(read);

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

通过打开文件是指定文件编码的方法把这个问题轻松的解决了。

    最后总结一下:java要读取数据流的时候一定要指定数据流的编码方式(至少读取String流的时候要这么作。

    你也许可以通过Http://www.ibeyond.org/得到相关信息,你也可以通过csdn@ibeyond.org和我联系。

    本文的版权归iBeyond所有,转载时请注明转载出处。

Java读取文件中含有中文的解决办法

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";...
  • java169
  • java169
  • 2008年05月24日 02:30
  • 156

JAVA学习提高之---- Java读取文件中含有中文的解决办法

引用:http://www.lihuasoft.net/article/show.php?id=580折磨了一天的问题,终于在黄昏的时候解决了,现在一吐为快。    众所周知,java的中文问题一直是...
  • luweifeng1983
  • luweifeng1983
  • 2009年01月06日 16:48
  • 661

java工程中的路径中含有中文的解决方法

遇到了路径中包含中文字符,导致文件不存在的错误。 解决方法: 转自:http://rmzdb.iteye.com/blog/2119266 编码转换问题:  ClassLoad...
  • cindy9902
  • cindy9902
  • 2016年08月08日 12:01
  • 2969

java web 中request请求参数含有中文的处理方法

通常请求参数中的中文都会解析为乱码,要按照需要的编码解析这些参数: 一般有两种思路: - 直接使用URLDecode解码:String rawStr = request.getQueryStrin...
  • u013146766
  • u013146766
  • 2017年11月23日 11:15
  • 143

FileReader读取中文字符乱码问题

FileReader fr=new FileReader(new File(filePath)); BufferedReader br = new BufferedReader(fr); 直接使用Fi...
  • wjw521wjw521
  • wjw521wjw521
  • 2017年06月01日 15:29
  • 807

JAVA读取中文文件,判断string中含有中文字符,判断某一个字符是否为中文字符

1.用InputStreamReader读取中文文件,如下: File file= new File("d:\\DrugTraffickingId.idx");  FileInputStream ...
  • zhangzongqin_a5
  • zhangzongqin_a5
  • 2012年10月12日 10:50
  • 8754

Java读取中文目录、文件

String jar_v4 = new String("D:\\Spring平台_V2\\10_fw_core\\target\\11_fw_core-1.0.16.jar".getBytes(), ...
  • u010402202
  • u010402202
  • 2018年01月17日 14:18
  • 18

java判断字符串中是否含有中文

这感觉其实是一个不太正规的方法,只是我在写爬取网页的东西的时候突然想到这可以用来判断是否为中文,说到这里感觉大家都想到了,对的,就是利用编码转码的方法: url中网址中不能直接包含中文,中文需要先经...
  • name_z
  • name_z
  • 2016年02月01日 13:52
  • 1333

ios url中带中文的解决方案

有两种方法: 一,使用NSString的方法: NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding...
  • wdqnmzd
  • wdqnmzd
  • 2014年07月23日 17:21
  • 334

Java读取文件----中文乱码问题

在用Java读写文件时,发现读取的文件在用控制台输出之后中文部分出现了乱码的问题。   先不吐槽为毛中文这么多怪事。   对于不同的文件,它们的默认编码格式可能是不同的,有的是gbk,有的是utf-8...
  • qq_28379809
  • qq_28379809
  • 2017年08月21日 17:11
  • 66
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java读取文件中含有中文的解决办法
举报原因:
原因补充:

(最多只允许输入30个字)