字符集编码的发展

字符集编码发展简史 字符集编码发展到今天,其实经历了一个漫长而曲折的过程。从开始的ASCII,到后来的ANSI,再到现在的UNICODE。 计算机是由发达资本主义国家发明的,而这些国家基本都是英语国家,用8位(256中状态)足以表示他们使用的所有符号(字母、数字、标点符号、控制字符等),而且还用不完(只用了前127号),所以他们最终决定一个字节由8位(即8个晶体管)组成。每个字节表示一个具体的符号,然后将这些符号连 阅读详情
爱问问题的小朋友Nico问了一个问题:
    "sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思。"

    
    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。
    再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。
    
    开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。
    他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00x10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例如遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0x20以下的字节状态称为"控制码"。
    他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的"Ascii"编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。
    后来,就像建造巴比伦塔一样,世界各地的都开始使用计算机,但是很多国家用的不是英文,他们的字母里有许多是ASCII里没有的,为了可以在计算机保存他们的文字,他们决定采用127号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了最后一个状态255。从128到255这一页的字符集被称"扩展字符集"。从此之后,贪婪的人类再没有新的状态可以用了,美帝国主义可能没有想到还有第三世界国家的人们也希望可以用到计算机吧!
    等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要保存呢。但是这难不倒智慧的中国人民,我们不客气地把那些127号之后的奇异符号们直接取消掉, 规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。 
    中国人民看到这样很不错,于是就把这种汉字方案叫做 "GB2312"。GB2312 是对 ASCII 的中文扩展。
    但是中国的汉字太多了,我们很快就就发现有许多人的人名没有办法在这里打出来,特别是某些很会麻烦别人的国家领导人。于是我们不得不继续把 GB2312 没有用到的码位找出来老实不客气地用上。
    后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。
    后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK 扩成了 GB18030。从此之后,中华民族的文化就可以在计算机时代中传承了。
    中国的程序员们看到这一系列汉字编码的标准是好的,于是通称他们叫做 "DBCS"(Double Byte Charecter Set 双字节字符集)。在DBCS系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了。那时候凡是受过加持,会编程的计算机僧侣们都要每天念下面这个咒语数百遍:
    "一个汉字算两个英文字符!一个汉字算两个英文字符……"
    
    因为当时各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码,连大陆和台湾这样只相隔了150海里,使用着同一种语言的兄弟地区,也分别采用了不同的 DBCS 编码方案——当时的中国人想让电脑显示汉字,就必须装上一个"汉字系统",专门用来处理汉字的显示、输入的问题,但是那个台湾的愚昧封建人士写的算命程序就必须加装另一套支持 BIG5 编码的什么"倚天汉字系统"才可以用,装错了字符系统,显示就会乱了套!这怎么办?而且世界民族之林中还有那些一时用不上电脑的穷苦人民,他们的文字又怎么办?
    真是计算机的巴比伦塔命题啊!
    正在这时,大天使加百列及时出现了——一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它"Universal Multiple-Octet Coded Character Set",简称 UCS, 俗称 "UNICODE"。
    UNICODE 开始制订时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是 ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于ascii里的那些“半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于"半角"英文符号只需要用到低8位,所以其高8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。
    这时候,从旧社会里走过来的程序员开始发现一个奇怪的现象:他们的strlen函数靠不住了,一个汉字不再是相当于两个字符了,而是一个!是的,从 UNICODE 开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的"一个字符"!同时,也都是统一的"两个字节",请注意"字符"和"字节"两个术语的不同,“字节”是一个8位的物理存贮单元,而“字符”则是一个文化相关的符号。在UNICODE 中,一个字符就是两个字节。一个汉字算两个英文字符的时代已经快过去了。
    从前多种字符集存在时,那些做多语言软件的公司遇上过很大麻烦,他们为了在不同的国家销售同一套软件,就不得不在区域化软件时也加持那个双字节字符集咒语,不仅要处处小心不要搞错,还要把软件中的文字在不同的字符集中转来转去。UNICODE 对于他们来说是一个很好的一揽子解决方案,于是从 Windows NT 开始,MS 趁机把它们的操作系统改了一遍,把所有的核心代码都改成了用 UNICODE 方式工作的版本,从这时开始,WINDOWS 系统终于无需要加装各种本土语言系统,就可以显示全世界上所有文化的字符了。
    但是,UNICODE 在制订时没有考虑与任何一种现有的编码方案保持兼容,这使得 GBK 与UNICODE 在汉字的内码编排上完全是不一样的,没有一种简单的算术方法可以把文本内容从UNICODE编码和另一种编码进行转换,这种转换必须通过查表来进行。
    如前所述,UNICODE 是用两个字节来表示为一个字符,这就总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。如果还不够也没有关系,ISO已经准备了UCS-4方案,说简单了就是四个字节来表示一个字符,这样我们就可以组合出21亿个不同的字符出来(最高位有其他用途),这大概可以用到银河联邦成立那一天吧!
    
    UNICODE 来到时,一起到来的还有计算机网络的兴起,UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从UNICODE到UTF时并不是直接的对应,而是要过一些算法和规则来转换。

    从网上引来一段从UNICODE到UTF8的转换规则:

Unicode

UTF-8

0000 - 007F

0xxxxxxx

0080 - 07FF

110xxxxx 10xxxxxx

0800 - FFFF

1110xxxx 10xxxxxx 10xxxxxx


例如"汉"字的Unicode编码是6C49。6C49在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 1100 0100 1001,将这个比特流按三字节模板的分段方法分为0110 110001 001001,依次代替模板中的x,得到:1110-0110 10-110001 10-001001,即E6 B1 89,这就是其UTF8的编码。 

    讲到这里,我们再顺便说说一个很著名的奇怪现象:当你在 windows 的记事本里新建一个文件,输入"联通"两个字之后,保存,关闭,然后再次打开,你会发现这两个字已经消失了,代之的是几个乱码!呵呵,有人说这就是联通之所以拼不过移动的原因。
    其实这是因为GB2312编码与UTF8编码产生了编码冲撞的原因。
    而当你新建一个文本文件时,记事本的编码默认是ANSI, 如果你在ANSI的编码输入汉字,那么他实际就是GB系列的编码方式,在这种编码下,"联通"的内码是:
    c1 1100 0001
    aa 1010 1010
    cd 1100 1101
    a8 1010 1000
    注意到了吗?第一二个字节、第三四个字节的起始部分的都是"110"和"10",正好与UTF8规则里的两字节模板是一致的,于是再次打开记事本时,记事本就误认为这是一个UTF8编码的文件,让我们把第一个字节的110和第二个字节的10去掉,我们就得到了"00001 101010",再把各位对齐,补上前导的0,就得到了"0000 0000 0110 1010",不好意思,这是UNICODE的006A,也就是小写的字母"j",而之后的两字节用UTF8解码之后是0368,这个字符什么也不是。这就是只有"联通"两个字的文件没有办法在记事本里正常显示的原因。 

    而如果你在"联通"之后多输入几个字,其他的字的编码不见得又恰好是110和10开始的字节,这样再次打开时,记事本就不会坚持这是一个utf8编码的文件,而会用ANSI的方式解读之,这时乱码又不出现了。

    受到过网络编程加持的计算机僧侣们都知道,在网络里传递信息时有一个很重要的问题,就是对于数据高低位的解读方式,一些计算机是采用低位先发送的方法,例如我们PC机采用的 INTEL 架构,这就叫little endian, 而另一些是采用高位先发送的方式, 这就叫big endian. 在网络中交换数据时,为了核对双方对于高低位的认识是否是一致的,采用了一种很简便的方法,就是在文本流的开始时向对方发送一个标志符——如果之后的文本是高位在位,那就发送"FEFF",反之,则发送"FFFE"。不信你可以用二进制方式打开一个UTF-X格式的文件,看看开头两个字节是不是这两个字节?

    顺便提一下little endian和big endian这两个网络术语的来历: 在<<格列佛游记>>中, 小人国中由于争论吃鸡蛋应该从大头敲还是从小头敲而分成了不同派系, 还发生了战争, 连皇帝都被干掉了. 在计算机技术发展中, 不同体系的硬件之间的通信也因为大头在前还是小头在前产生了同样严重的问题, 因此技术专家里比较幽默的那部分人----那一绝大部分人----就采用了"endian"这个有强烈政治隐喻的术语.
        
    好了,终于可以回答NICO的问题了,在数据库里,有n前缀的字串类型就是UNICODE类型,这种类型中,固定用两个字节来表示一个字符,无论这个字符是汉字还是英文字母,或是别的什么。

    下面的例子应该可以说明unicode型和ansi型的字段的区别:
    我们在任意类型的数据库中建一个表, 含有如下的字段.
  •  
    • nc nchar(10)
    • c char(10)
    然后, 我们再试着向其中加入下面的记录:
  •  
    • "1234567890", "1234567890"
    • "一二三四五六七八九十","一二三四五六七八九十"
    对于第一条记录, 两个字段都可以插入10个字符, 同时也都一个字符也多存不了. 
    但对于第二条记录,   nc字段可以把从"一"到"十"的数据都保存进去, 而c字段只能保存到"五", 再多就会出错.
    为什么? 因为在nchar字段里, 一个汉字一个字符, 10字符宽的字段就可以保存10个汉字. 而char字段里, 一个汉字算两个字符, 10字符宽的字段就只能保存5个汉字了.

字符集 字符编码的发展以及各种编码的含义用途 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。 最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码 sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思。 立即下载

相关推荐

在C和C++中使用Unicode

在C/C++中使用Unicode字符串 1 Visual C++ UNICODE编码释疑 6 字符编码简介:ASCII,Unicode,UTF-8,GB2312 12

深入解读字符集:从 ASCII 到 Unicode

字符集的演变是计算机历史中至关重要的一部分,从最早的 ASCII 到如今的 Unicode 和 UTF-8,字符编码标准为全球不同语言的交流提供了强大的支持。理解字符集的概念及其不同版本的应用,能够帮助开发者避免编码问题,提高程序的国际化能力。符集的演变是计算机历史中至关重要的一部分,从最早的 ASCII 到如今的 Unicode 和 UTF-8,字符编码标准为全球不同语言的交流提供了强大的支持。理解字符集的概念及其不同版本的应用,能够帮助开发者避免编码问题,提高程序的国际化能力。

Rockivy的博客 1736

Unity半透明物体景深失效?教你用双材质球方案完美解决(附完整Shader代码)

本文深入剖析了Unity中半透明物体导致景深效果失效的根本原因,即半透明物体默认不写入摄像机深度图。针对此问题,文章详细介绍了稳定高效的“双材质球”解决方案,通过为物体附加一个仅写入深度信息的不可见材质,完美修复景深效果,并提供了完整的Shader代码与实现脚本。

weixin_29010003的博客 381

字符集的由来及发展

字符集 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存...

weixin_30363981的博客 189

pytorch中dataloader的num_workers参数

结论速递 在Windows系统中,num_workers参数建议设为0,在Linux系统则不需担心。 1 问题描述 在之前的任务超大图上的节点表征学习中,使用PyG库用于数据加载的DataLoader,ClusterLoader等类时,会涉及到参数num_workers。在不同系统环境试验该参数的设定值时,会出现不同的结果 colab(Linux),设为12 有warning message,提示num_workers参数设置不合理,不影响继续运行 /usr/local/lib/python3.7/di

qq_40990057的博客 1万+

Windows 11下ROS2 Humble与PyCharm无缝集成实战(避坑指南+完整配置流程)

本文详细介绍了在Windows 11系统下如何实现ROS2 Humble与PyCharm的无缝集成,包括环境准备、ROS2 Humble安装、PyCharm配置以及C++与Qt5混合开发的实战技巧。通过避坑指南和完整配置流程,帮助开发者高效搭建稳定的机器人开发环境,特别适合Windows平台的ROS2开发者。

weixin_28710999的博客 366

字符集编码的发展与简介(一):ASCII码

本文依次介绍了ASCII、ANSI和UNICODE三种字符集的发展史。穿插介绍了国标码(GB)、GBK编码方式、多字节字符集(MBCS)、Unicode三种编码形式、BOM、Unicode与UCS的关系等问题。最后以Unicode为例总结了字符集编码模型,该模型适用于目前所有的字符集。

qq_34649825的博客 1215

STM32 HAL库定时器中断实现步进电机S型加减速控制与脉冲精准计数

本文详细介绍了如何使用STM32 HAL库定时器中断实现步进电机的S型加减速控制与脉冲精准计数。通过CubeMX配置定时器、计算PSC和ARR值,并结合S型曲线算法,实现平滑启停和精准定位。文章还提供了脉冲计数方案和常见问题排查技巧,帮助开发者优化步进电机控制性能。

weixin_29189363的博客 373

字符集、编码格式的理解

ASCII字符集用1个字节就能表示ASCII只能表示英文字符以及一些常见的字符,共128个。**- GBK兼容ASCII,对于ASCII字符,用1个字节来表示汉字用2个字节来表示,为了与ASCII字符区分,第一个字节的首位是1Unicode字符集兼容目前大部分的字符Unciode字符集的编解码有不同的方案,目前主流的是UTF-8编码格式UTF-8编码格式下,ASCII字符是1个字节,一个汉字是3个字节。

这是我的笔记本,记录学习历程,分享学习经验,菜鸡一枚,感谢支持! 438

灰度发布、蓝绿部署、双活架构与数据同步/备份/迁移

本文系统介绍了现代互联网系统的核心部署策略与数据管理技术体系。主要内容包括:1)三种服务发布策略(灰度发布、蓝绿发布、滚动发布)的原理、实现方式和适用场景对比;2)高可用架构设计(同城双活、异地双活、异地多活)的技术方案;3)数据同步机制、备份策略与迁移方案的设计要点。文章通过架构图、流程图和配置示例详细展示了各类技术的实施方法,并分析了不同方案的优劣及风险控制措施,为构建高可用、高可靠的分布式系统提供了完整的技术指南。

zane的博客 515

嵌入式软件工程师面试题目整理(一)

文章目录嵌入式软件工程师面试题目整理(一)Arm有多少32位寄存器?Arm2440和6410有什么区别CPU,MPU,MCU,SOC,SOPC联系与差别上拉&下拉&高阻态串口协议讲一讲RS232和RS485通讯接口有什么区别IIC时序图画一下,IIC有哪些状态,给一个字节,将它发送出去。IIC有什么注意事项?有没有用I/O模拟IIC,如果有需要注意什么?为什么2440的内存起始地址是3后面7个0呢?为什么6410的内存起始地址是5后面7个0呢?内存管理有什么看法?(MMU)锁有哪些?有什么注

嵌入式与Linux那些事的博客 7883

c语言遍历 json字符串,全面详解c语言使用cJSON解析JSON字符

为什么选择cJSON来解析JSON字符串?因为简洁又简单,而且效率又快,cJSON工程文件也非常简单,仅一个.c文件和一个.h文件!如果要自己写的话就是重造轮子了,况且效率上也不一定会比cJSON更好!且文件体积大小不到30k,源代码思路也非常清晰,也非常适合研究。当我们下载好cJSON只需要把.c和.h文件包含文件拷贝到我们工程目录下,并将头文件和实现文件包含进来就可以使用了!cJSON使用数据...

weixin_34015347的博客 2028

【一看就会】Autoware.universe中静态绕障路线的生成逻辑

在路径行为规划中,前期根据地图和起点终点,生成了一组连续可行的路径段序列(lanelets),然后后续路径行为规划,又会进行起始点,终止点,避障绕障路径的路径规划,并且会调用route_handler中的函数,进行中心线生成,最后生成路径,后续再给速度行为规划进行速度规划。在autoware.universe的规划中,是基于规则的规划,而其中的规则又是为了解决不同场景的。而这些场景,大部分是为了解决路上障碍物(静态、动态、行人、车辆等等)。

weixin_48386130的博客 321

字符集编码的发展与简介(四):字符集编码模型

本文依次介绍了ASCII、ANSI和UNICODE三种字符集的发展史。穿插介绍了国标码(GB)、GBK编码方式、多字节字符集(MBCS)、Unicode三种编码形式、BOM、Unicode与UCS的关系等问题。最后以Unicode为例总结了字符集编码模型,该模型适用于目前所有的字符集。

qq_34649825的博客 1045

CMOS 图像传感器——Skipping 和 Binning 模式

Skipping 和 Binning 模式

沧海一升的博客 6004

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

字符集编码的发展与简介(二):ANSI

本文依次介绍了ASCII、ANSI和UNICODE三种字符集的发展史。穿插介绍了国标码(GB)、GBK编码方式、多字节字符集(MBCS)、Unicode三种编码形式、BOM、Unicode与UCS的关系等问题。最后以Unicode为例总结了字符集编码模型,该模型适用于目前所有的字符集。

qq_34649825的博客 1551

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

GB2312字符集编码简介与发展

而GB18030则是对GBK的进一步扩展,是目前中国大陆法定的字符集编码标准,兼容GB2312和GBK,同时增加了更多的字符,以满足更广泛的需求。总的来说,GB2312作为中国国家标准的简体中文字符集编码,对我国信息化进程和中文信息处理技术的发展都产生了深远的影响。随着技术的不断进步和社会的发展,GB2312的地位和作用也将继续发挥,并在更广泛的领域产生更深远的影响。这为中国的信息化进程奠定了坚实的基础,也为中国的科技发展注入了强劲的动力。它的影响和地位也将随着时代的变迁和技术的进步而不断演变和发展。

xiehewe的博客 611

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

字符集编码的发展与简介(三):Unicode

本文依次介绍了ASCII、ANSI和UNICODE三种字符集的发展史。穿插介绍了国标码(GB)、GBK编码方式、多字节字符集(MBCS)、Unicode三种编码形式、BOM、Unicode与UCS的关系等问题。最后以Unicode为例总结了字符集编码模型,该模型适用于目前所有的字符集。

qq_34649825的博客 2400

字符集编码发展史(ASCLL,GB2312,GBK,Unicode,UTF-8)

字符集编码发展到今天,其实经历了一个漫长而曲折的过程 计算机是由发达资本主义国家发明的,而这些国家基本都是英语国家,用8位(256种状态足以表示他们使用所有的符号,字母,数字,标点符号等等),而且还用不完,所以他们决定一个字节由8位组成,每个字节表示一个具体的符号,然后将这些符号连起来就能表示世间万物了,这种编码就是ASCLL.,所以由于ASCII这张编码表的存在,计算机就能识别老美的文字了。 既然美国人已经能让计算机识别他们的文字了, 那我们中国人是不是也得想办法搞一张表来让咱们的汉字和计算机的二进制一

qq_48082548的博客 834

编码进化史:从ASCII到UTF-8的全球字符集发展历程

本文详细解析了字符编码从ASCII到UTF-8的演进历程,探讨了GB2312、GBK、GB18030等汉字编码标准的发展与挑战,以及Unicode和UTF-8如何解决全球字符集统一问题。文章结合实战案例,揭示了编码在现代应用中的关键作用,为开发者提供了编码选择的黄金法则。

weixin_33725722的博客 427

字符集、编码的前世今生

导航1ASCII的诞生2ASCII的自由扩展3GB23124BIG 55GBK6Unicode的诞生7Unicode的规则8UTF-8一统江湖9结束语1 ASCII的诞生20世纪60年代的美国,计算机发展到集成电路阶段,体积不断缩小,功能不断增强,应用软件开始出现。但当时每个厂家都按自己的喜好来编码,有的用6位表示一个字符,有的用7位表示一个字符,不同厂家之间有不同标准,软件不能跨设备运行,两个厂家生产出来的计算机无法交流。当时,编码方式超过60种,仅IBM一家公司在自家不同的设备上就有9种不同的编码。这时

weixin_40709302的博客 46

ANSI C读书笔记系列之字符集篇----第二章 字符集和编码(I ANSI编码)

这两个概念容易让人混淆,因为他们一般并未被严格区分.抛开编码讨论字符集是没有意义的,一如讨论编码一定是针对某一字符集而言的.所以上章在结尾我们不自觉的就说到了字符集与编码的一些基本概念.制定编码首先要确定字符集,并将字符集内的字符排序,然后和二进制数字对应起来.根据字符集内字符的多少,会确定用几个字节来编码. 每种编码都限定了一个明确的字符集合,叫做被编码过的字符集(Coded Charact

ustcgy的专栏 1136

11.1标准编码格式是什么意思?编码的概念 编码的字符集与编码 编码的意义 字符与编码的发展 标准编码常见格式 ASCII UTF-8 Python标准编码格式——《跟老吕学Python编程》附录资料

汉字内码扩展规范》(GBK) 于1995年制定,兼容GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码,编码空间为 0x8140~0xFEFE,共有 23940 个码位,其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。编码是依据预先规定的标准将某一对象信息变成计算机可识别的数码,因此,如果没有规定标准的编码方法,那么有这些独立的、不统一的编码规则实现的程序,将不具兼容性,易出现如乱码等由于编码格式一致或不兼容引起的问题。后128个称为扩展ASCII码。

Python老吕的博客 1288

字符型以及字符集的简单发展历史

java语言中的字符型以及字符集的发展历史

qq_59708861的博客 1291
上一篇: 在图片中隐藏文件
下一篇: c++类的构造函数两种初始化成员方式的区别
rotation ㅤ   
博客等级 码龄10年 486粉丝 98原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值