黑马程序员-第二十三天(字符编码)

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

第二十三天(字符编码)
一,转入编码表的流对象
InputStreamReader
OutputStreamWriter
PrintWriter
PrintStream


二,编码表的由来 
计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示,并一一对应,形成一张表


三,常见编码表:
ASCII:美国标准信息交换码。用一个字节的7位可以表示。
ISO8859-1:拉丁码表。欧洲码表。用一个字节8位表示
GB2312:中国的中文编码表。,ANSI 编码代表 GB2312 编码
GBK:中国的中文编码表升级。融合民更多的中文文字符号。两个字节表示一个汉字(最高位是-1)  兼容ASCII
Unicode:国际标准码,融合了多种文字。所有文件都用两个字节来表示,java语言使用的就是unicode
UTF-8:最多用三个字节来表示一个字符(都会加标识头)

三, 编码和解码


编码:
字符串变成字节数组  String -》byte[] :str.getBytes()(系统默认编码表gbk); str.getBytes(Charset charset)按照指定的字符集进行转换 
解码:               
字节数组变成字符串  byte[] —》String:new String(byte[])(系统默认编码表gbk); new String(byte[] ,Charset charset) 按照指定的字符集进行转换


Tomcat服务器默认以iso8859-1编码
注:当数据以GBK编码写入一个文件时,用iso8859-1解码时会出现乱码,,这时在用iso8859-1进行编码,然后在用gbk解码,,还 是原来的数据。如果
iso8859-1换成utf-8,,也会出现乱码,,因为它们都识别中文。


四。联通无法显示
当联通以gbk编码以utf解码出现的现象:以gbk编码的二进行行式符合utf-8的标头读两个字节去查表的规律
utf-8 标实头:
当字节以  0  开头时  就会读取一个字节进行查表
当第一个字以 110 开头,第二个字节以 10 开头时  就会读二个字节进行查表
当第一个字节以 1110 开头,第二个字节以 10 开头, 第三个字节以 10 开头时,就会读取三个字节进行查表


而“联通” 以gbk 编码的二进行表现形式为: 11000001
                    10101010                                                                                                               11001101
     10101000
符合utf-8以两个字节为一个字符进行查表的规律,所以记事本会无法显示

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

发布了48 篇原创文章 · 获赞 0 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章