关于编码的学习
昨天做题时发现一段乱码解不了密,一开始以为是编码的原因,结果是没有以二进制的形式打开,但还是学习了这些编码的区别和联系。
ANSI,GBK,UTF
学习来源:https://blog.csdn.net/qq_32087569/article/details/81946930
ANSI
首先出现的是ASCII码,ANSI编码是一种对ASCII码的拓展,ANSI码仅在前126个与ASCII码相同,之后的字符全是某个国家语言的所有字符。
还有ANSI编码其实包括很多编码:中国制定了GB2312编码,用来把中文编进去另外,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准。受制于当时的条件,不同语言之间的ANSI码之间不能互相转换,这就会导致在多语言混合的文本中会有乱码。
GB2312 ,GBK,GB18030
GB2312 是对ANSI的中文扩展。
GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。
再后来,GBK 扩成了 GB18030。
UTF与unicode
Unicode为了解决不同国家ANSI编码的冲突问题
UTF-8/16(8/16-bit Unicode Transformation Format):用于传输的unicode编码Unicode(UCS)只是一个字符集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
UTF(Unicode Translation Format),它是 Unicode (UCS)的实现(或存储)方式,称为 Unicode 转换格式。Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对 Unicode 编码的实现方式有所不同。
————————————————
版权声明:本文为CSDN博主「借我安适的清晨与傍晚」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32087569/article/details/81946930
utf-8/16/32
UTF-8,UTF-16,UTF-32;
使用最广泛的是 UTF-8 方案,UTF-8 使用可变长度字节来储存 Unicode 字符;
UTF-16,UTF-32都是用的定长来表示字符
UUENCODE与MIME编码
最近做的题正好遇到这两种,也记录一下。
UUENCODE
UU编码学习戳http://blog.chacuo.net/753.html
定义了用可打印字符表示二进制文字一种方法,并不是一种新的编码集合。主要解决,二进制字符在传输、存储中问题。它早期在电子邮件中使用较多,最近这些年来基本上被MIME 中Base64所取代了。
编码过程
Uuencode将输入资料以每三个字节为单位进行编码,如此重复进行。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit,以6-bit为单位分为4个群组,每个群组以十进制来表示所出现的数值只会落在0到63之间。将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符(32-空白…95-底线)的范围之中。
与base64的区别是UU编码后直接加上32找到对应的ASCII,而base64是通过映射表对照的
MIME编码
MIME编码学习戳https://www.cnblogs.com/upzone/archive/2007/04/09/705286.html
对邮件进行编码最初的原因是因为 Internet 上的很多网关不能正确传输8bit内码的字符,比如汉字等。编码的原理就是把8bit的内容转换成7bit的形式以能正确传输,在接收方收到之后,再将其还原成8bit的内容。
在MIME协议之前,邮件的编码曾经有过UUENCODE等编码方式 ,但是由于MIME协议算法简单,并且易于扩展,现在已经成为邮件编码方式的主流,不仅是用来传输8bit的字符,也可以用来传送二进制的文件,如邮件附件中的图像、音频等信息,而且扩展了很多基于MIME 的应用。目前http协议中,很多采用MIME框架。
MIME定义了两种编码方法Base64与QP(Quote-Printable)
QP编码
QP编码学习戳https://www.cnblogs.com/xd502djj/p/4290470.html
它是多用途互联网邮件扩展(MIME) 一种实现方式。
形式类似于这种”=B9=A4=D7=F7=BC=F2=B1=A8”,quoted-printable 就是说用一些可打印常用字符,表示一个字节(8位)中所有非打印字符方法。
编码过程
在所有ASCII码可打印字符中(33到126)和换行符都可以直接使用ASCII码表示而不用在前面加等号,除了“=”号必须使用”=3D”
BUU上的一道QP编码
=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
每三字节编码成为一个汉字,解码为“那你也很棒哦”
- 本文标题:关于编码的学习
- 本文作者:y4ny4n
- 创建时间:2020-02-24 10:53:29
- 本文链接:https://y4ny4n.cn/2020/02/24/几种编码的学习/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!