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、理解乱码是如何产生的。
相关文章推荐
- 谈谈Java的IO操作
- 使用java.io.*操作文件的拆分与合并,Application一例!
- 使用java.io.*操作文件的拆分与合并,Application一例
- Java的各种IO操作总结
- JAVA常见IO操作(转贴)
- 提高Java IO操作的性能
- java io 对文件操作的示例
- Java IO操作与字节流
- 典型文件操作 (java.io.*)
- Java IO操作的实例代码
- java IO 系统-java 文件操作大全
- 使用java.io.*操作文件的拆分与合并,Application一例!
- java io操作代码
- JAVA的IO操作小结
- Java基础视频笔记(七):IO操作
- java学习笔记(十三)----IO操作
- java io操作代码
- 使用java.io.*操作文件的拆分与合并,Application一例!
- java 常用IO操作
- Java中各种文件类型操作的代码与详细文件IO讲解