Java IO操作——字符编码

来源:互联网 发布:淘宝装修全套教程 编辑:程序博客网 时间:2024/06/05 07:00

学习目标

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

编码:
在计算机的世界里,任何的文字都是以指定的编码方式存在的,在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、理解乱码是如何产生的。



0 0
原创粉丝点击