中文或者英文字符在计算屏幕上的显示是一个点阵,说白一点就是一个稍显简单的图形,
那么,我们在计算机之间传递中文或者英文字符时,是不是要将每一个像素的内容都传递过去,这样的话文本传输就会显得很庞大,一篇文章半小时都传不完。
所以,就将每一个字符都使用一组数字来表示,就像使用字典一样(假设每一页只有一个字符),发送者告诉接收者这个字符在字典的哪一页就可以了,接收者获得了页码,就去字典里面查找,这样就传输内容就极大的减少了
但是,这会有另外一个问题,发送者使用的新华字典,而接收者使用的是牛津大词典,同样页码上的字符就不一样了,所有就要求大家使用的字典一样
这里的字典就是指UTF-8,GBK,big-5,所以进行文本传输时一定要保证双方使用的字符集一致
String中有一个方法getBytes(charset),就是将字符串转化为字节码,就是在字典charset中的页码组合
- String name = "你好";
- byte[] bytes = name.getBytes(Charset.forName("UTF-8"));
- String name2 = new String(bytes, Charset.forName("UTF-16"));
- String name3 = new String(bytes, Charset.forName("UTF-8"));
- System.out.println(name2);
- System.out.println(name3);
复制代码 输出结果
可以看到我们使用UTF-8对“你好”进行编码,分别使用UTF-16和UTF-8解码,前一个出现乱码,只有后一个正确解码,所以只需要保证解码编码前后一致就不会出现乱码
|