字符编码/字符集简明分类---分类方式探讨---转换方法探讨

如果涉及到字符编码的转换,则需要弄清楚两件事情,一:自己的编码格式,二:目标编码格式。  

很炒蛋的事是由于编码格式的分类 标准角度 不同,很容易把人弄晕,既搞不清自己的编码格式,也搞不清别人的编码格式。 大部分文章是针对一点进行解释,管中窥豹。

如果你看了各个字符集的介绍还是不知道怎么转换。还得搞清楚字符集的发展过程、分类方式。

字符集与字符编码

这部分几乎是混在一块。

字符集:规定了具体的字符的二进制格式,对应的概念是单个字符概念。

字符编码格式:用字符集构建字符串的时候使用的策略。对应的概念是整个串怎么组织。

如unicode是字符集,UTF-8是编码格式。

按字节数分类

单字节,多字节,unicode(固定两字节,也叫宽字节)

这个地方就有问题了,unicode是具体的字符集,  多字节字符集 是 字符集的集合。 不是一个层次的概念。

按具体字符集分类

ascII ,gbk ,unicode, 

各个字符集介绍:https://blog.csdn.net/ancky/article/details/2034809

按发展历程分

1、ASCII   

2、本地化ANSI ( GB2132, BIG5 ,JIS )  。ASCII不够用了,各个国家扩充一下。  ANSI是个标准,不是具体字符集。

3、国际化unicode  。 本地化太琐碎,统一一下。

在这个发展历程之外,如GB2132不够用了又扩充为GBK。 unicode太浪费空间,UTF进行编码时转换了一下,节省了部分空间。

发展历程介绍:https://blog.csdn.net/youxishaonian/article/details/70312438     

举个例子:

如果在VS中编写接口,提供json数据给前端显示。有如下情况:

前端:一般统一为UTF-8。

json: 标准里也要求为UTF-8。

VS:  项目设置中有unicode和多字节字符集两个选项。

如果你是多字节,你还是不知道自己的字符集。

需要在命令行输入:chcp,得到活动代码页(就是字符集)。 如936代表GB2312。

活动代码页简介:https://blog.csdn.net/yelbosh/article/details/7518484

根据自己的字符集GB2312,转化为 UTF-8的 编码格式,  这已经不是一个层面的概念在转换了。

所以可以理解为 :

多字节--->宽字节

GB2312--->UNICODE

char---->wchar

ANIS ---->unicode

另:我猜测VS把unicode和多字节放一个层次进行选择,估计unicode既是一个标准,又包含了具体的实现。

猜你喜欢

转载自blog.csdn.net/qq_30795577/article/details/86535966
今日推荐