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

Java IO学习【19】Java中字符编码解码小知识

2015-08-02 10:06 232 查看
昨天没有写博文因为昨天***力不是很强,其实在不想学的时候出去玩玩也是很好的。我发现我不是一个适应能力很强的人,我只是有点儿适应能力,所以遇到事情想办法解决然后记住这件事,这才是我的生存之道。举一反三融会贯通什么的好像与我无缘,所以勤奋的解决事情我才能成长~加油。开始技术。

目前还是学习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.一旦操作文本涉及到具体的指定编码表时,必须使用转换流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: