您好,欢迎访问三七文档
编码与字符集殷坤2015年7月16日ASCII编码:•计算机中存放的都是0和1的二进制值。8个位对应一个字节,常用16进制来表示•而我们普通用户所希望看到的是,计算机把其所存储的对应的16进制的数值,转化为对应的字符,包括英文和中文等其他语言的字符,然后输出到屏幕上•美国国家标准学会(AmericanNationalStandardInstitute,ANSI)制定的,标准的单字节字符编码方案,主要用于显示现代英语和其他西欧语言•ASCII字符集共2^7=128个字符=33个控制字符+95个可见字符这点数量的字符也就懂英语的可以用!!!!字符集和编码方式的多样化字符集描述ISO-8859-1支持部分欧洲使用的语言,编码范围:0x00-0xFF,0x00-0x7F与ASCII一样,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号GB2312共收入简体汉字6763个和非汉字图形字符682个,汉字区域,高位为0xB0-0xF7,低位为0xA1-0xFE,整个字符集分成94个区,每区有94个位。每个区位上只有一个字符GBKGBK向下与GB2312编码兼容,增加了14000多字,采用双字节表示,总体编码范围为8140-FEFE,首字节在81-FE之间,尾字节在40-FE之间UnicodeUnicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案,Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符UTF-8(编码)是一种针对Unicode的可变长度字符编码,又称万国码,一个字节跟ASCII一样,其他的每个字节由一个换码序列开始,第一个字节由唯一的换码序列,由n位连续的1加一位0组成,首字节连续的1的个数表示字符编码所需的字节数随着计算机在全世界的广泛使用,字符的显示要考虑加入其他国家的语言文字JAVA的字符串处理•编码:1.byte[]getBytes():使用系统默认的字符集编码成byte数组2.byte[]getBytes(Stringcharset):使用给定的charset字符集编码成byte数组•解码:1.String(byte[]bytes):使用系统默认的字符集解码指定的byte数组,并构建新的字符串2.String(byte[]bytes,Stringcharset):使用指定的字符集解码并创建新的字符串Unicode与UTF-8的转换Unicode编码(十六进制)UTF-8字节流(二进制)00000000-0000007F0xxxxxxx00000080-000007FF110xxxxx10xxxxxx00000800-0000FFFF1110xxxx10xxxxxx10xxxxxx00010000-001FFFFF11110xxx10xxxxxx10xxxxxx10xxxxxx00200000-03FFFFFF111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx04000000-7FFFFFFF1111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx10xxxxxx10xxxxxx。将0x6C49写成二进制是:0110110001001001,用这个比特流依次代替模板中的x,得到:111001101011000110001001,即E6B189GBK、GB2312转换为UTF-8•GBK是一种字符集,UTF-8是基于Unicode的编码方式,所以核心问题就是GBK与Unicode的转化问题。既然是两个字符集的转换问题,那么自己去查表吧!HTTP协议的编码•HTTP协议总体分为HTTP头和实体内容(Get请求一般不需要),请求有请求行,响应有状态行。•实体内容的编码一般由头部的content-type决定•而对于Get请求,都是把数据串联在请求的url后面作为参数,url拼接完成后,浏览器会对url进行URIEncoder,然后发送给服务器。•URLEncoder:英文字母不变,.*_-不变,空格字符变成+,其他字符先使用某个编码机制然后每个字节用一个包含3个字符的字符串%xy表示,其中xy为该字节的两位十六进制表示形式Base64编码•Base64是网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息,Base64也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐•标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,所以又有一种urlsafe的base64编码,其实就是把字符+和/分别变成-和_Base64编码规则•将每三个字节作为一组,一共是24个二进制位,将这24个二进制位分为四组,每个组有6个二进制位,即:3*8=6*4•例:我二进制:111001101000100010010001分组(6个一组):111001101000100010010001高位补0:00111001001010000010001000010001查表:5oiR
本文标题:编码与字符集总结
链接地址:https://www.777doc.com/doc-5306156 .html