`

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路径中含有中文的问题。无论是路径中还是文件名包含中文都可以处理。经测试验证通过。

    Java读取含中文key的properties文件

    以下将详细介绍如何在Java中读取含中文key的Properties文件,并利用反射调用相关方法。 首先,我们需要理解Java的Properties类。`java.util.Properties`是Java标准库中的一个类,它提供了一种加载和保存属性列表的...

    java properties文件中文转化

    博主分享了一个实用的方法,即通过Unicode转换工具来处理含有中文字符的properties文件,以确保数据的正确性。 首先,我们需要理解Java Properties文件的编码问题。默认情况下,Java Properties类在读取和写入文件...

    Java读取Excel文件

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

    java读取txt文件

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

    Java读取Excel表格中的日期

    通过上述方法,可以有效地解决Java读取Excel文件中日期格式的问题。这种方法不仅能够准确地识别日期格式,还能够妥善处理特殊情况,确保数据的一致性和准确性。在实际应用中,可以根据具体需求调整日期格式的解析...

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

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

    找出代码文件中含有中文的程序

    标题中的“找出代码文件中含有中文的程序”是一个关于软件开发中的文本分析任务,目标是检测源代码文件中是否包含非英文字符,特别是中文字符,但要排除注释部分。这通常是为了确保代码的国际化和本地化,以及避免...

    利用JAVA对STDF文件进行分析_郑立钧

    通过读取文件中的字节数据,可以移动文件指针并获取数据,如FARRecord类中所示,其中cpuType和stdfVer分别通过读取字节并应用位掩码(AND 0xff)来获得。 主程序处理STDF文件的大致流程如下: 1. 打开STDF文件,...

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

    本篇将深入探讨如何使用Java有效地逐行读取含有中文字符的txt文本文件,并避免乱码问题。 首先,我们需要了解文本文件的编码方式。常见的编码格式有ASCII、GBK、UTF-8等。其中,GBK是针对中文字符的扩展ASCII编码,...

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

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

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

    在Java Web开发中,处理包含文件上传...通过以上步骤,我们可以有效地在Java中读取和处理通过`multipart/form-data`方式提交的表单数据,包括文件上传。理解这些概念和技术对于任何Java Web开发者来说都是至关重要的。

    java android zip解压缩(解决压缩中文乱码问题)

    通过引入这个特殊的"zip.jar"库,开发者可以在Android平台上更顺利地处理含有中文字符的ZIP文件,而无需担心乱码问题。这是一个轻量级且高效的方法,对于处理跨平台的压缩文件问题尤其有用。在实际开发中,我们应该...

    解决了DBF数据和表头乱码的javadbf.jar

    标题提到的"解决了DBF数据和表头乱码的javadbf.jar"是一个Java库,它专门用于处理DBF文件。原始的javadbf.jar可能存在读取DBF文件时编码转换不准确的问题,导致中文或者其他非ASCII字符显示为乱码。开发者通过识别并...

    java 读取excel内容 创建excel 插入文字及图片

    在Java编程中,处理Excel文件是一项常见的任务,无论是读取数据、创建新的Excel工作簿,还是向其中插入文字和图片,都有成熟的库可以支持。本篇文章将深入探讨如何使用Java来实现这些功能。 首先,我们需要引入一个...

    java 生成excle文件

    在Java编程环境中,生成Excel文件是一项常见的任务,特别是在数据处理、报表生成或导出时。在本场景中,我们使用了jxl.jar库来完成这个功能。jxl是一个开源的Java库,它允许开发者读取、写入和修改Excel文件(.xls...

    java创建和删除文件夹、文件.doc

    删除文件同样可以通过`java.io.File`类中的`delete()`方法实现: ```java public void delFile(String fileName) { try { File myFileName = new File(fileName); boolean result = myFileName.delete(); if ...

    Linux上执行带main方法的java文件

    这里需要注意的是命令中的`-jar`选项,它告诉Java运行时环境去读取该文件的`manifest.mf`文件,并从中找出`Main-Class`,然后执行该类的`main`方法。 #### 总结 通过上述步骤,可以在Linux环境下顺利地执行含有`...

    java实现根据关键字查找所在文件夹的文件

    对于每个文件,我们使用`java.nio.file.Files`类的`readAllLines()`方法读取文件内容,这会返回一个包含文件所有行的列表。 ```java List<String> lines = Files.readAllLines(file.toPath()); ``` 3. **搜索...

Global site tag (gtag.js) - Google Analytics