Java IO流之中文乱码
来源:互联网 发布:数组slice js 编辑:程序博客网 时间:2024/06/15 20:18
今天主要就讲讲一些常用的可以设置编码的函数的用法。讲一下常见的编码,例如ISO-8859-1,gbk,utf-8等,这三个就是最常见的了。首先,为了防止乱码,我们得先统一编码,然后出现乱码再通过一些函数来解决。
下面讲讲常见的中文乱码解决方法和例子吧..既然说了表单数据出现中文乱码,那就顺便说说解决方法吧.
函数:new String(byte[] data, String encoding);
这个方法主要就是用于解决上面说的表单数据提交时出现中文乱码,这个方法通常与String.getBytes(String encoding)一起使用.
用法:String str = new String(formMsg.getBytes("ISO-8859-1"),"utf-8");
因为今天主要要讲一下IO流操作中易出现的中文乱码解决方法,所以就言归正传,说说我在学习中遇到的乱码问题和解决方法吧.
首先,我们都知道Java的IO流中按字节分就有字节流和字符流之分,看字面意思就知道,字节流是按字节为单位来操作的,而字符流当然是按字符为单位来操作的咯,字节流一般是用来操作一些二进制文件,例如MP3文件,JPG等等。字符流呢?一般是用来操作一些文本文件。
android中也有很多地方涉及到IO流操作,当然也有不少中文乱码问题。有一些细节没注意到就有可能导致乱码。
首先讲讲字节流,先贴一方法吧。
这个方法就是通过传进的File对象,读取里面的内容,返回一个字符串,如果你把这方法copy去读取含有中文的文件,无意外的话就会出现中文乱码,如果出现中文乱码,该如何解决呢?其实String类有提供方法解决,只要把str = str + new String(b, 0, n);改成str = str + new String(b, 0, n, "gbk");就可以解决了。
上面的方法在一般情况下是可以读取中文了,但是,仔细想想,毕竟上面的方法是以字节为单位的,而一个中文占了两个字节,细心的同学应该已经想到了,上面的方法是一次读取512个字节,如果,一个中文刚好就占了第512个字节和第513个字节,你一次读512个字节,狠狠得把他们拆散了,重新new了一个新的字符串,你说乱码不乱码?
所以说,操作含有中文的文件还是通过字符流来好了,字符流操作起来又快,虽然从字节流一步一步升级到字符流有点烦..
还是先贴一方法吧。
public static String readerFile() {
File f = new File("f:\\test03001.dat");
String str = "";
String line = "";
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
fis = new FileInputStream(f);
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
str = str + line;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return str;
}
如果按上面方法写最后还是出现乱码,你会如何解决?在哪个地方设置正确的编码?
你会学第一种方法?str = str + new String(line.getBytes("ISO-8859-1"),"gbk");?你自己去试试吧- -。
那你会学第二种方法?str = str + new String(line,"gbk");?根本就没有这个方法...
那到底要怎么解决?
其实,Java里有很多地方可以设置编码,上面的解决方法只要把isr = new InputStreamReader(fis);改成isr = new InputStreamReader(fis,"gbk");就可以搞定了.
Java中中文乱码的问题还很多,这只是皮毛,还有更多解决方法等着你去发现,记得分享...
- Java IO流之中文乱码
- Java IO流之中文乱码
- 浅析java IO流和中文乱码问题
- Java IO读取文件中文乱码问题
- 【Java IO知识】读取中文乱码问题解决
- Java IO读写中文各种乱码问题
- Java IO读取文件中文乱码问题
- java io写文件 在linux出现中文乱码
- java io写文件 在linux出现中文乱码
- Java IO 读取/写入文件 中文乱码困难解决代码
- java io写文件 在linux出现中文乱码
- java&jsp中文乱码之终极攻略
- ubuntu入门之java 6.0中文乱码
- Java之cookie中文乱码问题
- 中文乱码之填坑Java web
- Java文件下载之解决中文乱码
- java io流读文件,乱码问题
- JAVA IO流 输出乱码问题解决
- WebLogic启动Node Manager报错:Invalid state file format. State file contents
- "init.rc" in Android
- 第七章-类
- 台灣地區計算機術語與大陸地區的對照
- 【LeetCode】Subsets
- Java IO流之中文乱码
- JavaScript高级<2>
- servlet的“单例”问题
- How to config your SDK
- Window宽度和高度属性
- mybatis新新的下载
- centos6.5 nginx 安装
- Oracle
- Firefox禁用JavaScript