`

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

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


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


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


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


File f=new File((new BoxConfig()).getBaseDir()+"Data\\"+request.getParameter("ID")+".inc");


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\\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流的时候要这么作。


效果不错!
分享到:
评论

相关推荐

    JAVA解决URL路径中含有中文的问题

    JAVA解决URL路径中含有中文的问题。无论是路径中还是文件名包含中文都可以处理。经测试验证通过。

    poi.zip java读取excel文件

    poi.zip java读取excel文件,其中bin压缩文件中含有jar包,eclipse导入时可直接使用;src压缩文件含有java源代码,需要阅读源码的童鞋可以下载使用

    java读取word,pdf格式文档方法

    整理了用java如何读取word文档,pdf文档的几种方法,含有程序

    java读取ini文件jar

    java读取ini文件的jar包,内含有一个实例.

    Java读取Excel文件

    java使用的jpoi读取execl文件 该资源含有最新的poi的jar包 可以用来读取execlxls xlsx两种格式 里面含有代码可以直接运行

    java读取txt文件

    java 读取txt文件,文件中包含汉字和英文。并且含有乱码处理的方法。

    Java读取Excel表格中的日期

    通过Java读取Excel文件中的数据时,需要自动判断当前Cell中的数据格式是否日期格式,如果是就要做特殊处理,以便读出数据的格式与预想的相符。

    java 逐行读取txt文本如何解决中文乱码

    java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8; 2.利用 InputStreamReader(new FileInputStream(fileUrl), ...

    读取txt文件,统计“java”字符串出现的次数

    读取txt文件,统计“java”字符串出现的次数

    Java中,当表单含有文件上传时,提交数据的如何读取(吐血版)

    Java中,当表单含有文件上传时,提交数据的如何读取(吐血版)亲自测试版本。花了整整一天,主要针对enctype="multipart/form-data"form 提交的方式

    android中文件的保存与读取

    该压缩包中含有两个android工程:file和other。file中主要讲述了对文件的保存与读取的功能,other主要用来测试文件保存的四种操作模式。

    Java本地编码文件转UTF-8文件

    把含有本地编码的文件转成utf-8的,经常用于java文件的转码. 把编码gbk的java文件批量转成utf-8编码的文件.

    一个 自己 写的 jar 包,含有 Java 调用 Liunx 的静态类;文件的创建,读取,上传的静态类,和筛选目录下文件的静态类

    一个 自己 写的 jar 包,含有 Java 调用 Liunx 的静态类;文件的创建,读取,上传的静态类,和筛选目录下文件的静态类,包括源代码。

    含有经纬度tiff格式图像批量读取并画图.m

    将含有经纬度信息tiff格式图像使用Matlab批量读取信息数据,并在Matlab中画图可视化显示出来,画图加入了高斯滤波进行去噪平滑

    JAVA多线程本地IP端口扫描器

    自己制作的JAVA制作的多线程的可用端口扫描。运用了java的swing组件,利用多线程加快扫描速度。功能:获得本地IP,扫描可用端口。 含有两个文件,(main)主类文件,线程类文件。

    Java 连连看(含源码)

    Java 练练看 含有源代码 文件形式:可运行jar文件 开发环境:Eclipse 强调一点:Java在读取jar自身文件时一定要注意后缀名的大小写。多次栽在这里,浪费时间。

    实验GUI.docx

    在一开始定义两个按钮一个是读取一个是写入,在主程序中定义读取和写入按钮的作用,读取:表示向D盘读取123文本文件中数据或者文字,写入:表示向文件写入数据,另外还定义了若文件不存在,向用户提示“操作错误”

    java编程100例

    java编程100实例,适合初学java的朋友学习,含有源代码,省去了码代码的时间,可以直接导入,运行。建议实用eclipse,内容如下: 实例1 产生自己的控件 实例2 控件的排布示例 实例3 控件的相互控制与消息传递 实例4 ...

    java解析给定url

    HtmlParse,解析给定url中的中文字符,输出到文本文件中: url:可配置多个 输出路径:可配置 package com.lhs; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import ...

Global site tag (gtag.js) - Google Analytics