文档章节

编码格式笔记

bithup
 bithup
发布于 2017/12/15 19:48
字数 1663
阅读 5
收藏 0

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)
ANSI(American National Standards Institute 美国国家标准学会)
汉字的Unicode编码和ANSI编码,GBK是汉字的ANSI编码,UTF-8是汉字的Unicode编码

ASCII历史
标准ASCII码由一个字节,也就是八位的二进制数表示字符,八位二进制数最多能表示256种不同字符;
最初只使用了前128个码值,也就是前七位,最高位用作校验符
0x00 ~ 0x1f 前32个码表示控制码,比如换行、ESC等
0x20 ~ 0x3f 表示空格(码值32)、运算符、数字(码值48)等
0x40 ~ 0x5f 表示@(码值64)、大写字母(A的码值是65)等
0x60 ~ 0x7f 表示小写字母(a码值97,与A相差32)、DEL(码值127,最后一位)

扩展ASCII码后面128 ~ 255被其他国家或组织用来表示新的字符,称为扩展字符集
扩展字符集例子
IBM字符集,它把值为128-255之间的字符用于画图和画线,以及一些特殊的欧洲字符
ISO 8859-1Latin 1(简称为ISO Latin-1),它把位于128-255之间的字符用于拉丁字母表中特殊语言字符的编码


GB2312 中国对ASCII编码的扩展
一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(称之为高字节)从0xA1到 0xF7,后面一个字节(低字节)从0xA1到0xFE;
大于128的编码作为一个Leading Byte,紧跟在Leading Byte后的第二(甚至第三)个字符与Leading Byte一起作为实际的编码
对于汉字的ANSI编码而言,无所谓MSB, LSB。它就是把第一个字节理解为Leading Byte,第二个字节理解为另外的编码,所以它们在内存里的存放次序不能倒过来,否则就理解不对了。
GB2312保留了128个ASCII编码,并在扩展编码中对其进行了重新编码,ASCII码称为半角字符,GB2312对ASCII的重新编码称为全角字符;

GBK 由于GB2312的编码容量过小,于是重新设计的编码
不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是 扩展字符集里的内容
GBK包含GB2312的所有内容

GB18030在GBK的基础上加入少数民族语言字符

ISO(国际标准化组织)

UNICODE(Universal Multiple-Octet Coded Character Set,简称UCS)
统一用两个字节来表示所有字符,可以表示65535种字符(对最新的标准这种说法是错误的
它通过增加一个高字节对ISO Latin-1字符集进行扩展,当这些高字节位为0时,低字节就是ISO Latin-1字符。
对8位的ASCII码扩展为16位,高8位为0,保存英文时相比ASCII码存储空间增加一倍
ASCII码不兼容其他国家的编码,ASCII码与GBK没有一种简单的算数方法可以对其转换,只有查表

UTF(UCS Transfer Format)
如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8 就是每次8个位传输数据,而 UTF16 就是每次16个位,只不过为了传输时的可靠性,从UNICODE到 UTF时并不是直接的对应,而是要过一些算法和规则来转换。
UTF(Universal Transformation Format)
蒙B,到底是传输,还是转换

UTF-8 是Unicode的一种变长字符编码,
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII
码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中
文字符占3个字节)。从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换。

如何识别变长字符编码,使用特定的标记码

Unicode转UTF-8
UTF-8是这样做的:
1. 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;
2. n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。


GB2312与Unicode编码冲突,BOM
windows记事本”不能单独保存“联通”:
GB编码的“联通内码包含Unicode编码的标记码,Unicode编码第一个字节前三位是110,第二个字节前两位是10,“联通”的GB编码正好符合。使用记事本单独保存“联通”,默认是以ANSI格式保存(此处有个疑问,为什么不是保存为GB编码格式,记事本也没有提供GB格式的选项,中文的ANSI格式是否就是指GB格式)
在简体中文windows系统中ANSI表示GBK
BOM是windows自动的编辑软件在保存UTF-8文件时自动在文件头部加上的隐藏字符标记
windows记事本打开文件的编码格式是如何确定的,上面的“联通”的例子中,保存为ANSI编码后打开,
没有BOM头,为什么记事本还以UTF-8格式打开

带BOM头的PHP文件显示的时候顶部不能贴合,有隐藏文字     

-------------------------------------------------------------------------

字符在显示屏上以图形的形式存在,在内存和磁盘中以字节数组的形式存在,这两者之间是如何转换的呢?

字符集:字符图形的集合,列出了我们想要在计算机屏幕上显示的图形和不显示的控制字符

编码表:将字符集中的字符或图形与一个唯一的数字(码值、码点)对应,形成一张表

编码(格式):将某个字符集的编码表中的码值按某种方式转化成磁盘或内存中的字节数据

解码(格式):编码的逆向操作

https://www.cnblogs.com/developerY/p/3575271.html

© 著作权归作者所有

上一篇: python&mnist笔记
下一篇: Java 枚举Enum
bithup
粉丝 8
博文 101
码字总数 82172
作品 0
朝阳
程序员
私信 提问
http上传下载中遇到的问题

http上传文件方法,使用post方式上传文件会因为文件的编码问题而存在中文乱码的问题,通过方法 codeString() 来获得编码格式,在自定义的 CustomFilePart() 中得到对应的格式,从而保证格式的...

遛狗少年
2015/09/25
150
1
移动视频编码学习笔记(二)

终于在CentOS下编译完成了FFmpeg,又好几次把系统玩的从崩溃到急救,觉得还是安心先看看入门知识好。于是结合《新一代高效视频编码》与雷霄骅大神的广电小学期视频开始了基础知识的学习。 注...

Rew小小厨
2017/12/16
0
0
DataInputStream,DataOutputStream读写UTF8原理

今晚上写代码玩,用到函数,而文件默认保存为gbk,显然是乱码。突然想起来去看看存储编码规则,就去找了些文章了解writeUTF(String)的原理,在此记录。首先需要弄明白unicode与utf8的表示规则...

gKiwi
2013/07/29
5.7K
1
编码与模式------《Designing Data-Intensive Applications》读书笔记5

进入到第四章了,本篇主要聊的点是编码(也就是序列化)与代码升级的一些场景,来梳理存储之中涉及到的编解码的流程。目前主流的编解码便是来自Apache的Avro,来自Facebook的Thrift与Google的...

LeeHappen
2018/01/13
0
0
如何从为知笔记迁移到有道云笔记

今天是狠狠地体会到了各个云计算笔记之间的不兼容性。为知笔记很多插件很好用,但是都是支持有道云笔记和EverNote导入到为知笔记,没有从为知笔记导入到其他笔记的插件。今天一个很重要的笔记...

Ryan_snow
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

秒杀系统思路

业务分析 技术挑战 请求响应要快:无论成功失败,需要尽快返回给用户 架构设计   前端:静态化   站点层:限制请求数   服务层:乐观锁写缓存   数据库CAP:读写高可用,一致性,扩容...

雷开你的门
28分钟前
10
0
最全的教育行业大数据解决方案,个个针对痛点

大数据的悄然兴起也带动了教育行业的革新,移动教育、云课堂等的出现,使得教育行业再次成为了可以中长期保持高景气的行业。然而,初涉数据领域的教育行业同时也面临着相当大的难题,还需要更...

朕想上头条
31分钟前
7
0
预约模块设计分析

1.预约功能描述: 预约是小程序中常见的一种商品管理系统,商家可根据商品或服务的特性,灵活设置预约细节,为用户提供线上预约服务,如场地预约,商品预定等,实现高效经营。 预约场景: ...

鱼煎
35分钟前
5
0
阿里云日志服务构建网站实时分析大盘实战

场景分析 挖掘数据价值是当前企业级网站共同面临的问题。买买网是一个电商平台网站,每天拥有大量的用户访问和购买记录。为了引导用户直接消费,提升购买率和转化率,不同的用户类别需要推荐...

阿里云官方博客
36分钟前
5
0
TL665xF-EasyEVM开发板硬件处理器、NAND FLASH、RAM

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
39分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部