出现原因:FileReader读取文件的过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来解码,然后在UTF-8 -> GBK -> UTF-8的过程中编码出现损失,造成结果不能还原最初的字符。

  1. /**
  2. * 获得文件内容
  3. * @param file
  4. * @return
  5. */
  6. public String getFileContent(File file){
  7.  
  8. InputStreamReader reader = null;
  9. StringBuffer result = new StringBuffer();
  10. try {
  11. reader = new InputStreamReader(new FileInputStream(file),"gbk");
  12.  
  13. int ch = reader.read();
  14. while(ch != -1){
  15. result.append((char)ch);
  16. ch = reader.read();
  17. }
  18. reader.close();
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. reader = null;
  22. }
  23. return result.toString();
  24. }

FileReader和FileWriter的使用:可用于己知输入编码和输出编码情况下:

  1. public List<String> getFileContent(){
  2.  
  3. List<String> list = new ArrayList<String>();
  4.  
  5. File f = null;
  6. BufferedReader buff = null;
  7. BufferedWriter out = null;
  8. StringBuffer buffer = new StringBuffer();
  9. try {
  10. f = new File("resource/domain0108.csv");
  11. buff = new BufferedWriter(new FileWriter(f));
  12.  
  13. String temp = buff.readLine();
  14. while(true){
  15. if(temp == null){
  16. break;
  17. }
  18. /*byte[] bb = temp.getBytes("utf-8");
  19. temp = new String(bb,"gbk");*/
  20. list.add(temp + "\r\n");
  21. buffer.append(temp + "\r\n");
  22. temp = buff.readLine();
  23. }
  24. System.out.println("InfoPorcesser.getFileContent返回文件内容列表成功"+list.size());
  25. out.write(buffer.toString());
  26. out.flush();
  27. out.close();
  28. buff.close();
  29. } catch (Exception e) {
  30. e.printStackTrace();
  31. buff = null;
  32. }
  33.  
  34. return list;
  35. }

FileReader乱码的更多相关文章

  1. java web 学习十(HttpServletRequest对象1)

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  2. FileReader读取文件里文乱码问题

    有一个UTF-8编码的文本文件,用FileReader读取到一个字符串,然后转换字符集:str=newString(str.getBytes(),"UTF-8");结果大部分中文显 ...

  3. mac下CSV文件用FileReader、FileWriter读写乱码

      先说下windows的excel文件搬到mac下打开为什么会显示乱码.    在win下,excel采用GBK编码,1个汉字是存为2个字节,而mac下各种软件广泛默认使用UTF-8编码方式,如在e ...

  4. FileReader读取中文txt文件编码丢失问题(乱码)(转)

    有一个UTF-8编码的文本文件,用FileReader读取到一个字符串,然后转换字符集:str=new String(str.getBytes(),"UTF-8");结果大部分中文 ...

  5. fileReader对象读取txt文件乱码问题 以及如何获取文件的url路径(绝对路径)

    <input type="file" @change="aaa($event)"> <div id="hi">< ...

  6. [HTML5] FileReader对象

    写在前面 前一篇文章介绍了HTML5中的Blob对象(详情戳这里),从中了解到Blob对象只是二进制数据的容器,本身并不能操作二进制,故本篇将对其操作对象FileReader进行介绍. FileRea ...

  7. Java 中文乱码问题总结

    开发java应用出现乱码是很常见的,毕竟现在unicode的使用还不是很广泛,在使用gb2312(包含了gbk简体,big5繁体)的系统中要正确 实现中文的display和数据库的存储是最基本的要求. ...

  8. BufferedReader与BufferedWriter读写中文乱码问题

    正常读写英文时用""""没问题 FileReader fre = new FileReader("E:\\TEST\\readText.txt&quo ...

  9. FileReader和FileWriter

    FileReader和FileWriter 使用fileoutputstream类向文件写入数据与使用fileinputstream类从文件中将内容读取出来,存在不足,就是中文占两个字节, 搞不好就会 ...

随机推荐

  1. CString 转换成 char *

    最近用到CString类,转换成 char * 类型,下面介绍用法: 一.CString 和 LPSTR 转换: CString转换成LPSTR: 方法一:CString server; LPSTR ...

  2. Unity3d集成移动MM SDK 2.2的技术要点(坑爹的MM SDK)

    原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140423517951/ U3D集成移动MM的SDK绝对是以坑爹为主的东西. 浪 ...

  3. SDUT2484算术表达式的转换

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2484&cid=1182 题目描述 小明在学习了数据结构之后,突然想起了以前没有解决的算术 ...

  4. EXPRESS.JS再出发

    那个那个MEAN的书,看得七七八八,有了大概,现在就要一样一样的加深记忆啦.. EXPRSS.JS的东东,网上有现成入门书籍: 第一期代码测试: var express = require('expr ...

  5. DataRow.RowState 属性

    RowState 的值取决于两个因素:已对该行执行的操作的类型,以及是否已对 DataRow 调用了 AcceptChanges. private void DemonstrateRowState() ...

  6. 学习selenium需要具备的知识或技术

    因为有QTP和JAVA的基础,selenium学起来会快很多,总结下学习selenium所需要具备的知识或技术 1.selenium进行的自动化测试是基于ui层面的,所以html,css,javasc ...

  7. Oracle安装后,服务中没有监听器怎么处理?

    运行中输入netca 回车运行oracle net configuration assistant, 选择监听程序配置->下一步->接下来的步骤可以都选默认一直下一步到最后,即可.

  8. swift学习笔记-UI篇之UIImageView

    1.基本使用 将要使用的图片拖入到项目里,我这里使用的是名为“1.jpg”的图片,然后创建UIImageView,并设置要显示的图片为"1.jpg"//1. 基本使用 let im ...

  9. Photoshop:笔刷制作和安装

    笔刷制作 1.新建一个文档,大小为要制作的笔刷大小,把画笔图像放里面 2.选择:菜单->编辑->定义画笔预设,这时在画笔面板中会出现刚定义的画笔 3.存储画笔,可以把当前的笔刷保存为一个. ...

  10. swfupdate flash上传工具

    引用:http://baike.baidu.com/view/1332553.htm 下载地址:http://code.google.com/p/swfupload/ 什么是SWFUpload? SW ...