您的位置:首页 > 编程语言 > Java开发

Java IO操作——字符编码

2016-08-10 17:35 274 查看

学习目标

 了解常用的几种编码
 掌握乱码的产生原因

编码:
在计算机的世界里,任何的文字都是以指定的编码方式存在的,在JAVA程序的开发中最常见的是以下的几种编码:
ISO8859-1、GBK/GB2312、unicode、UTF
iso-8859-1编码属于单字节编码,最多只能表示0~255的字符范围,主要在英文上应用。
GBK/GB2312:中文的国标编码,专门用来表示汉字,是双字节编码。
unicode:Java中就是使用此编码方式,也是最标准的一种编码,是使用16进制表示的编码。但此编码不兼容iso8859-1编码。
UTF:由于unicode不支持iso8859-1编码,而且容易占用更多的空间,而且对于英文字母也需要使用两个字节编码,这样使用unicode不便于传输和存储,因此产生了utf编码,utf兼容iso8859-1编码,同时也可以用来表示所有的语言字符,不过utf编码是不定长编码,每一个字符的长度从1~6个字节不等,一般在中文网页中使用此编码,因为这样可以节省空间。

乱码的产生
在程序中如果处理不好字符的编码,则就有可能出现乱码问题,如果现在本机的默认编码是GBK,但在程序中使用了iso-8859-1编码,则就会出现字符的乱码情况,就好比两个人交谈,一个人说的是中文,另外一个人说的是其他语言,如果语言不同,则肯定无法沟通。
如果没有处理好编码的问题,则肯定在程序中出现乱码。

得到本机的编码显示:
使用System类可以取得与系统有关的信息,那么直接使用此类就可以找到系统的默认编码,使用如下方法:
public static Properties getProperty()
System类可以取得系统的相关信息,一直在接触此类。
public class CharSetDemo01{
public static void main(String args[]){
System.out.println("系统默认编码:" +
System.getProperty("file.encoding")) ;	// 获取当前系统编码
}
};
因为现在的本机环境,是中文环境,所以是使用GBK进行编码,很明显如果现在在程序中使用了ISO8859-1编码。如果要编码,则需要使用String类的支持。
public byte[]  getBytes(String charsetName) throws UnsupportedEncodingException
可以指定使用的字符编码。
import java.io.OutputStream ;
import java.io.FileOutputStream ;
import java.io.File ;
public class CharSetDemo02{
public static void main(String args[]) throws Exception {
File f = new File("D:" + File.separator + "test.txt") ;	// 实例化File类
OutputStream out = new FileOutputStream(f) ;	// 实例化输出流
byte b[] = "中国,你好!".getBytes("ISO8859-1") ;	// 转码操作
out.write(b) ;	// 保存
out.close() ;	// 关闭
}
};
乱码产生的根本原因就是字符编码不统一造成的。

总结:
1、了解几种常用的编码特点。
2、理解乱码是如何产生的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: