Java IO学习【19】Java中字符编码解码小知识
2015-08-02 10:06
232 查看
昨天没有写博文因为昨天***力不是很强,其实在不想学的时候出去玩玩也是很好的。我发现我不是一个适应能力很强的人,我只是有点儿适应能力,所以遇到事情想办法解决然后记住这件事,这才是我的生存之道。举一反三融会贯通什么的好像与我无缘,所以勤奋的解决事情我才能成长~加油。开始技术。
目前还是学习IO,所以还是说说流的事儿,如果说字节那么在头脑中形成的概念就是bit二进制数,可以传输各种文件,但在bit的结构上加上码表那么就会有相应的文字出现。目前世界上的主流码表也有很多种,比如GBK,UTF-8相应的在往文件中写字符的时候就应该指定所使用的编码表。当使用FileWrite/FileReader的写汉字时候会默认使用GBK,如果想自己指定一个码表,就得使用OutputStreamWriter/InputStreamReader格式如下:
当然GBK和UTF-8是有区别的,比如 在GBK中每个中文2 byte而在UTF-8中每个中文3 byte,所以在字符文件写入的时候指定写入的格式;在读取的时就必须指定相应的格式,否则会出现乱码。比如未知字符区就会显示"??"。
那么现在总结一下什么时候使用转换流,我认为主要有一下两个情况下使用转换流:
1.源或者目的对应的设备是字节流,但操作的却是文本。可以使用转换流作为桥梁提高对文本操作的便捷。
2.一旦操作文本涉及到具体的指定编码表时,必须使用转换流。
目前还是学习IO,所以还是说说流的事儿,如果说字节那么在头脑中形成的概念就是bit二进制数,可以传输各种文件,但在bit的结构上加上码表那么就会有相应的文字出现。目前世界上的主流码表也有很多种,比如GBK,UTF-8相应的在往文件中写字符的时候就应该指定所使用的编码表。当使用FileWrite/FileReader的写汉字时候会默认使用GBK,如果想自己指定一个码表,就得使用OutputStreamWriter/InputStreamReader格式如下:
OutputStreamWriter(new FileOutputStreamWriter("UTF_1.txt"),"UTF-8");//写入时可以指定所用码表。 InputStreamReader(new FileInputStreamReader("UTF_1.txt"),"UTF-8");//读出时指定所用码表。
当然GBK和UTF-8是有区别的,比如 在GBK中每个中文2 byte而在UTF-8中每个中文3 byte,所以在字符文件写入的时候指定写入的格式;在读取的时就必须指定相应的格式,否则会出现乱码。比如未知字符区就会显示"??"。
那么现在总结一下什么时候使用转换流,我认为主要有一下两个情况下使用转换流:
1.源或者目的对应的设备是字节流,但操作的却是文本。可以使用转换流作为桥梁提高对文本操作的便捷。
2.一旦操作文本涉及到具体的指定编码表时,必须使用转换流。
相关文章推荐
- eclipse快捷键
- 启动项目报错java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
- Spring 循环引用 ——理解singleton与prototype初始化的区别
- spring相关知识
- Java_Web三大框架之Hibernate+jsp+selvect+HQL查询数据
- MyEclipse10.7+Maven项目junit单元测试报找不到类异常,附正常编译后的输出设置
- Struts配置参考
- hibernate与spring的配置参考
- Java实现多线程的三种方式
- Java 基本介绍
- Java 8 种数据类型 字节大小,int 4个字节,boolean几个字节
- spring当中的定时任务
- Spring+Struts+Hibernate+Mysql
- spring当中的分布式事务
- java中文件的编码(在建立text文本时,如果文件中只写联通或是联,再次打开的时候就会出现乱码,下面就是原理)
- JAVA中文件的编码
- 小谈Java Enum的多态性
- 定制Eclipse IDE之插件篇(二)
- [Drools]JAVA规则引擎 -- Drools
- java反射详解