阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

转换流的出现

109次阅读
没有评论

共计 1600 个字符,预计需要花费 4 分钟才能阅读完成。

1、转换流 (字符流) 出现的原因及思想

由于字节流操作中文不是特别方便,所以,java 就提供了转换流。
字符流 = 字节流 + 编码表

字节流读取中文可能出现的小问题

public static void main(String[] args) throws IOException {// 创建字节输入流对象 FileInputStream fis = new FileInputStream("a.txt"); // 读取数据 (这种情况读出数据存在编码出错的可能性,因为有的符号不是一个字节一个编码) // int by = 0; // while ((by = fis.read()) != -1) { // System.out.print((char) by); // } byte[] bys = new byte[1024]; int len = 0; while ((len = fis.read(bys)) != -1) {System.out.print(new String(bys, 0, len)); } // 释放资源 fis.close();}

2、编码表概述和常见的编码表

编码表
由字符及其对应的数值组成的一张表

计算机只能识别二进制数据,早期由来是电信号。

为了方便应用计算机,让它可以识别各个国家的文字。

就将各个国家的文字用数字来表示,并一一对应,形成一张表。

编码: 把看得懂的变成看不懂的
String – byte[]

解码: 把看不懂的变成看得懂的
byte[] – String

举例:谍战片(发电报,接电报)

码表:小本子
字符 数值

要发送一段文字
今天晚上在老地方见

​ 发送端:今 – 数值 – 二进制 – 发出去
​ 接收端:接收 – 二进制 – 十进制 – 数值 – 字符 – 今

常见编码表
ASCII/Unicode 字符集
ISO-8859-1
GB2312/GBK/GB18030
BIG5
UTF-8

常见编码表解释

ASCII:美国标准信息交换码。

用一个字节的 7 位可以表示。

ISO8859-1:拉丁码表。欧洲码表

用一个字节的 8 位表示。

GB2312:中国的中文编码表。

GBK:中国的中文编码表升级,融合了更多的中文文字符号。

GB18030:GBK 的取代版本

BIG- 5 码:通行于台湾、香港地区的一个繁体字 编码 方案,俗称“大五码”。

Unicode:国际标准码,融合了多种文字。

所有文字都用两个字节来表示,Java 语言使用的就是 unicode

UTF-8:最多用三个字节来表示一个字符。

UTF- 8 不同,它定义了一种“区间规则”,这种规则可以和 ASCII 编码保持最大程度的兼容:

它将 Unicode 编码为 00000000-0000007F 的字符,用单个字节来表示
它将 Unicode 编码为 00000080-000007FF 的字符用两个字节表示
它将 Unicode 编码为 00000800-0000FFFF 的字符用 3 字节表示

3、字符串中的编码问题

编码
把看得懂的变成看不懂的
解码
把看不懂的变成看得懂的

public static void main(String[] args) throws UnsupportedEncodingException {String s = "你好"; // String -- byte[] // 编码 byte[] bys = s.getBytes(); // [-60, -29, -70, -61] // byte[] bys = s.getBytes("GBK");// [-60, -29, -70, -61] // byte[] bys = s.getBytes("UTF-8");// [-28, -67, -96, -27, -91, -67] System.out.println(Arrays.toString(bys)); // 解码 // byte[] -- String String ss = new String(bys); // 你好 // String ss = new String(bys, "GBK"); // 你好 // String ss = new String(bys, "UTF-8"); // ??? System.out.println(ss); }

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-06发表,共计1600字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中