编码方式
前言:
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。
字符集为每个字符分配一个唯一的编号,类似于学生的学号,通过编号就能够找到对应的字符。
ASCII( American Standard Code for InformationInterchange, 美国信息交换标准代码)
是基于拉丁字母的⼀套电脑编码系统, 主要⽤于显⽰现代英语和其他西欧语⾔。
ASCII码,只有256个字符,美国人倒是没啥问题了,他们用到的字符几乎都包括了,但是世界上不只有美国程序员啊,所以需要一种更加全面的字符集。
Unicode(中文:万国码、国际码、统一码、单一码)
是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得计算机可以用更为简单的方式来呈现和处理文字。
UTF-8就是Unicode的一个使用方式,通过他的英文名Unicode Tranformation Format就可以知道。
- UTF-8:一种变长的编码方案,使用 1~6 个字节来存储;
- UTF-32:一种固定长度的编码方案,不管字符编号大小,始终使用 4 个字节来存储;
- UTF-16:介于 UTF-8 和 UTF-32 之间,使用 2 个或者 4 个字节来存储,长度既固定又可变。
源文件需要保存到硬盘,或者在网络上传输,使用的编码要尽量节省存储空间,同时要方便跨国交流,所以一般使用 UTF-8,这就是选择编码字符集的标准。
程序中的字符或者字符串,在程序运行后必须被载入到内存,才能进行后续的处理,对于这些字符来说,要尽量选用能够提高处理速度的编码,例如 UTF-16 和 UTF-32 编码就能够快速定位(查找)字符。
有了UTF8为什么还需要GBK
其实UTF8确实已经是国际通用的字符编码了,但是这种字符标准毕竟是外国定的,而国内也有类似的标准指定组织,也需要制定一套国内通用的标准,于是GBK就诞生了.
GB2312–>GBK–>***GB18030***是中文编码的三套方案,出现的时间从早到晚,收录的字符数目依次增加,并且向下兼容。GB2312 和 GBK 收录的字符数目较少,用 1~2个字节存储;GB18030 收录的字符最多,用1、2、4 个字节存储。
Windows 默认支持 GBK。Windows 在内核层面使用的是 Unicode 字符集(严格来说是 UTF-16 编码)
UNIX 家族的操作系统(Linux、Mac OS、iOS 等)内核都采用 UTF-8 编码
选择方案主要考虑,存储空间和处理效率的矛盾
URL编解码
网络标准RFC 1738做了硬性规定 :只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*’(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL;
除此以外的字符是无法在URL中展示的,所以,遇到这种字符,如中文,就需要进行编码。
反之,就是解码。
Big Endian和Little Endian
Big Endian 是指低地址端存放高位字节。 Little Endian 是指低地址端存放低位字节。
Java采用Big Endian来存储数据、C\C++采用Little Endian。在网络传输一般采用的网络字节序是BIG-ENDIAN。
CSV文件
你有一个TXT文件,并且各项之间以逗号分隔,那么你直接将扩展名改为CSV文件,以EXCEL打开,以逗号分隔的每一列就自动到了EXCEL的每一列中。
好处:可以轻松的导入表格和数据库中,一行代表一条数据,这样就可以批量的导入导出数据库中的值,这种文件格式经常用来作为不同程序之间的数据交互的格式。
通常如果使用文件对大量数据进行编码,可以采用此种格式