Java IO读写中文各种乱码问题

转自:http://blog.sina.com.cn/s/blog_484ab56f0101muzh.html

java.io.*读写中文各种乱码,很费劲。不完全解决方法如下:

对于Reader,直接使用Reader系列读取中文会乱码,需要先生成InputStream,再通过InputStreamReader转换为Reader,同时设定编码,才能避免乱码。如

   FileInputStream fis = new FileInputStream("D:/a.txt");
   BufferedReader
br = new BufferedReader(new
InputStreamReader(fis,"gb2312"));
 
对于RandomAccessFile,直接用RandomAccessFile去写中文的时候会有乱码,要这样使用写才没有乱码。
RandomAccessFile raf
= new RandomAccessFile("D:/c.txt","rw");
raf.seek(raf.length());//从文件尾部写
raf.write("我勒个去".getBytes("UTF-8"));//UTF-8或者gbk以打开的文件的实际编码为准。这个是文本文件是UTF-8编码时
raf.write("我勒个去".getBytes("gbk"));//这个是文本文件是gbk编码时
 
而RandomAccessFile的readLine方法读的时候,居然又变成了用8859_1编码读……不可思议啊。使用String的getByte和构造方法转换。
   RandomAccessFile
raf = new
RandomAccessFile("D:/cc.txt","rw"); //源文件是Gbk编码

String l =
raf.readLine();
//这会按照8859_1读

l = new
String(l.getBytes("8859_1"),"gbk");
//将8859_1转成Gbk。如果源文件是utf-8,这儿就改成utf-8

 
另外发现几个类有转码的功能
PrintWriter(String
filename, String csn);//PrintWriter的构造函数可以选择编码(Csn:charset
name),csn可以是"UTF-8"或者"gbk"
"字符串".getBytes("UTF-8");
//String字符串在转为Byte[]时可以按指定编码转
new String(byte[] b,
String csn); //这个可以将byte[]编码转换
 
System.out.print(Charset.defaultCharset());
//可以显示系统当前默认编码是什么。默认编码会作为程序中各种编码使用

Java IO读写中文各种乱码问题 【转】的更多相关文章

  1. java(IO)读写文件乱码转换UTF-8问题

    java(IO)读写文件乱码转换UTF-8问题 读取文件 String Content = ""; // 文件很长的话建议使用StringBuffer try { FileInpu ...

  2. java io读写文件

    java io读写文件相关阅读:http://www.cnblogs.com/wing011203/archive/2013/05/03/3056535.html public class DemoI ...

  3. java中Cookie中文字符乱码问题

    如果Cookie中的Value 中有中文字符出现,在加入Cookie的时候,会出现下面的错误: java.lang.IllegalArgumentException: Control characte ...

  4. Java IO读写大文件的几种方式及测试

    读取文件大小:1.45G 第一种,OldIO: public static void oldIOReadFile() throws IOException{ BufferedReader br = n ...

  5. java程序中中文没有乱码,存入数据库后中文乱码问题

    jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/sys_user?useOldAliasMetadataBe ...

  6. java中的中文参数存到数据库乱码问题

    关于java中的中文参数乱码问题,遇见过很多,若开发工具的字符集环境和数据库的字符集环境都一样,存到数据库中还是乱码的话,可以通过以下方法解决: 用数据库客户端检查每个字段的字符集和字符集校对和这个表 ...

  7. java 顺序 读写 Properties 配置文件 支持中文 不乱码

    java 顺序 读写 Properties 配置文件 ,java默认提供的Properties API 继承hashmap ,不是顺序读写的. 特从网上查资料,顺序读写的代码,如下, import j ...

  8. java读写中文文件

    在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通常,假如自己不修改的话,windows自身采用的编 ...

  9. java 读取文件中文乱码问题

    很少写java io的代码,今天整了一个发现 本地调试好好的,放到jmeter里就打印乱码.一番折腾,终于搞定~直接上代码: List<Order> orderList = new Arr ...

随机推荐

  1. python成长之路第二篇(4)_collections系列

    一.分别取出大于66的数字和小于66的数字 小练习:需求要求有一个列表列表中存着一组数字,要求将大于66的数字和小于66的数字分别取出来 aa = [11,22,33,44,55,66,77,88,9 ...

  2. Cube(hd1220)

    Cube 点我 Problem Description Cowl is good at solving math problems. One day a friend asked him such a ...

  3. C#实现在winfrom程序中下载文件

    //下载文件//downlaodUrl 系统路径如:http://xxx.xxx.xxx/UpFile/kaoqin.doc//fileName 自定义文件名字加后缀(如:考勤.doc)//fileP ...

  4. [Leetcode][Python]54: Spiral Matrix

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 54: Spiral Matrixhttps://leetcode.com/p ...

  5. poj 2975 Nim_最经典的Nim取石子

    题意:给你n堆石头,每次只能在一堆取最少一个石子,最后拿走最后一堆的为胜者,问胜者有多少种赢得取法 #include <iostream> #include<cstdio> u ...

  6. OC基础10:基本的C语言特性1

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.  函数和方法的区别? (1).方法包 ...

  7. 安装Discuz!论坛时提示“mysqli_connect() 不支持 advice_mysqli_connect”

    安装Discuz!论坛时提示“不支持Mysql数据库,无法安装论坛”的解决方法1,在系统的 system32(C:\windows\system32)目录下缺少libmysql.dll文件,解决方法是 ...

  8. 【机房系统知识小结点系列】之遍历窗体中的控件,判断Text是否为空?

    做机房系统时,几乎每个窗体中都会用到判断界面中的控件是否为空的情景.我们曾经是这样走来的: 第一版: 好处:对窗体界面中的Text等控件,逐一做判断,当用户输入某一项为空的时候,会议弹出框的形式,告诉 ...

  9. 【最大点独立集】【poj1419】【Graph Coloring】

    题意: 最多能选取多少点,没有边相连. 解法: 取反图,求最大团 代码: #include<cstdio> #include<cstring> #include<iost ...

  10. GCD实现简单的单例类-Singletion

    什么是单例模式 1.单例模式是一个类在系统中只有一个实例对象.通过全局的一个入口点对这个实例对象进行访问.在 iOS 开发中,单例模式是非常有用的一种设计模式.如 下图,是一个简单单例模式的 UML ...