字符编码史话

↑点击上方蓝色字体,关注“嵌入式软件实战派”获得更多精品干货。
1. ASCII
在《计算机信息编码杂谈》文中提到ASCII的历史由来。
ASCII编码:全称American Standard Code for information Interchange,翻译过来就是美国信息交换标准码。

标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。

其中:

0~31127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响  。 

32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。65~90为26个大写英文字母,

97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

百度百科
因此,这里包含了128个字符,也刚好占了7个Bit,共包括33个控制字符和95个可显示字符,这一字符集被称为 ASCII
2. EASCII
一开始,计算机是在美国使用的,128个字符也基本够用了。这个计算机是个好东西,后来传到了欧洲,欧洲可不全是用英语的啊,还有德、法、意等等呢。128个字符肯定是不够的,就像法语中有注音字符的。于是就将Byte中的最高位利用起来了,例如,法语的 é的二进制流为 1000 0010(即130),这样一来,这些欧洲国家的编码体系,可以表示最多 256个字符了。这个就是扩展ASCII了,即EASCII(Extend ASCII)。

但是,问题还是有的。不同的国家有不同的语言字母啊,256也是不够的。
最终导致的结果是,值为0~127的字符都是统一的,值为128~255对应的字符却因各个国家不一样而自行定义了。
混乱了吧,各国不一样的编码字符,总不能都叫EASCII吧。
于是,EASCII就这样成为了历史,目前很少用了。ISO/IEC 8859就这样诞生了。
ISO/IEC 8859与EASCII码类似,也同样是在ASCII码的基础上,利用了ASCII的7位编码所没有用到的最高位(首位),将编码范围从原先ASCII码的0x00~0x7F(十进制为0~127),扩展到了0x80~0xFF(十进制为128~255)。
ISO/IEC 8859其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符或者未定义,0xA0-0xFF之间是文字符号。
显然,ISO/IEC 8859字符编码方案同样是单字节编码方案,也同样完全兼容ASCII。
那么,0xA0-0xFF之间是到底是什么字符?欧洲国家那么多,语言也不一样,这里就需要标准,IEC就定义了16套规范定义。

此字符集支持部分于欧洲使用的语言,包括阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗里西语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意大利语、拉丁语、卢森堡语、挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语及瑞典语。

百度百科


ISO/IEC 8859-1 (Latin-1) 西欧语言
ISO/IEC 8859-2 (Latin-2) 中欧语言
ISO/IEC 8859-3 (Latin-3) 南欧语言。世界语也可用此字符集显示。
ISO/IEC 8859-4 (Latin-4) 北欧语言
ISO/IEC 8859-5 (Cyrillic) 斯拉夫语言
ISO/IEC 8859-6 (Arabic) 阿拉伯语
ISO/IEC 8859-7 (Greek) 希腊语
ISO/IEC 8859-8 (Hebrew) 希伯来语(视觉顺序)
ISO 8859-8-I 希伯来语(逻辑顺序)
ISO/IEC 8859-9 (Latin-5 或 Turkish) 它把Latin-1的冰岛语字母换走,加入土耳其语字母。
ISO/IEC 8859-10 (Latin-6 或 Nordic) 北日耳曼语支,用来代替Latin-4。
ISO/IEC 8859-11 (Thai) 泰语,从泰国的 TIS620 标准字集演化而来。
ISO/IEC 8859-13 (Latin-7 或 Baltic Rim) 波罗的语族
ISO/IEC 8859-14 (Latin-8 或 Celtic) 凯尔特语族
ISO/IEC 8859-15 (Latin-9) 西欧语言,加入Latin-1欠缺的芬兰语字母和大写法语重音字母,以及欧元(?符号。
ISO/IEC 8859-16 (Latin-10) 东南欧语言。主要供罗马尼亚语使用,并加入欧元符号。
此时,有小伙伴会问,ISO/IEC 8859没有中文?为毛我的项目中是用ISO/IEC 8859能显示中文?
别急,先让我呵呵一会!
之所以你的项目用了ISO/IEC 8859能显示中文(表示中文字符),(我也遇到过)那时因为你们的工程师认为整出来的,毫不客气说是偷换概念。其实也有个好处,0~127部分仍然兼容ASCII字符,而A0~FF部分换成中文,即编码>0xA0的要用两个字符拼起来表示一个中文字符(毕竟中文字符比较多),实际上拼起来的是GB2312编码(后续会讲)。你这样用也没毛病,小项目反正是自己用自己知道,人家也没找你查版权问题。
3. GB2312
好了,回到正题。上文也提到GB2312了,这又是怎么来的呢?
话说,计算机传入中国后,我们也想着如何将有几千年历史的汉字搬进计算机。

《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号是GB 2312—1980。

GB2312编码适用于汉字处理和汉字信息交互等,一般在大陆使用,新加坡也用这套编码。

GB2312编码基本集收入汉字6763个汉字和682个非汉字图形字符。而整个字符集分94个区,每个区又分94个位,每个区位只有一个字符,于是,这种用区和位来对汉字编码,称为区位码

01-09区
特殊符号
16-55区
一级汉字,按拼音排序
56-87区
二级汉字,按部首/笔画排序
10-15区
未有编码
88-94区
未有编码

例如,“”字是GB2312之中的第一个汉字,它的区位码就是1601。

同理,可以从表中找到“”字的区位码是1655。

注意,以上讲的是区位码,下面将字符的编码。

在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII。浏览器编码表上的“GB2312”,通常都是指“EUC-CN”表示法。 

每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。 

“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上 0xA0)。 由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是 72*94=6768。其中有5个空位是D7FA-D7FE。

那么,这个“啊”字的编码是什么?两个字节,0xB0(第一个字节) 0xA1(第二个字节)储存。区位码=区字节+位字节(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。理解了吧!或者干脆别算了,查表呗。

(完整的表格建议自行在网上查阅)

4. GBK

浩瀚的中华文化肯定不止这六七千字啊,况且还有繁体字呢。于是,一个叫GBK的字符编码标准就横空出世了。

GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification) ,中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订。

GBK是向下于GB2312兼容的。

GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年10月制定, 1995年12月正式发布,中文版的WIN95、WIN98、WINDOWS NT以及WINDOWS 2000、WINDOWS XP、WIN 7等都支持GBK编码方案。

GBK编码中的汉字和字符是非常全面的了。

GBK 规范收录了 ISO 10646.1 中的全部 CJK 汉字和符号,并有所补充。具体包括:

  1. GB 2312 中的全部汉字、非汉字符号。

  2. GB 13000.1 中的其他 CJK 汉字。以上合计 20902 个 GB 化汉字。

  3. 《简化字总表》中未收入 GB 13000.1 的 52 个汉字。

  4. 康熙字典》及《辞海》中未收入 GB 13000.1 的 28 个部首及重要构件。

  5. 13 个汉字结构符。

  6. BIG-5 中未被 GB 2312 收入、但存在于 GB 13000.1 中的 139 个图形符号。

  7. GB 12345 增补的 6 个拼音符号。

  8. 汉字“○”。

  9. GB 12345 增补的 19 个竖排标点符号(GB 12345 较 GB 2312 增补竖排标点符号 29 个,其中 10 个未被 GB 13000.1 收入,故 GBK 亦不收)。

  10. 从 GB 13000.1 的 CJK 兼容区挑选出的 21 个汉字。

  11. GB 13000.1 收入的 31 个 IBM OS/2 专用符号。

  12. 未录入《新华字典》上的一些字,如“韡”的简体。

GBK 亦采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。

5. GB18030

那么,GB18030又是什么编码标准?

国家标准GB18030-2000《信息交换用汉字编码字符集基本集的补充》是我国继GB2312-1980和GB13000-1993之后最重要的汉字编码标准,是我国计算机系统必须遵循的基础性标准之一。

其实,你可以简单理解为是GBK的升级版。

GB 18030主要有以下特点 :

  • 采用变长多字节编码,每个字可以由1个、2个或4个字节组成。

  • 编码空间庞大,最多可定义161万个字符。

  • 完全支持Unicode,无需动用造字区即可支持中国国内少数民族文字、中日韩和繁体汉字以及emoji等字符。

具体的编码规则都是大同小异,本文就不详细描述了,有兴趣可以自行查阅相关文献。
5. BIG5
等等,港澳台地区用什么编码?大家都知道,港澳台是用繁体字的,不大可能用GB2312吧,那么GBK?当时的湾湾不想跟大陆玩,他要自己搞,就搞出个BIG5来。
BIG5也叫“大五码”,是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。

Big5虽普及于台湾、香港与澳门等繁体中文通行区,但长期以来并非当地的国家/地区标准或官方标准,而只是业界标准。倚天中文系统、Windows繁体中文版等主要系统的字符集都是以Big5为基准,但厂商又各自增加不同的造字与造字区,派生成多种不同版本。

2003年,Big5收录到CNS11643中文标准交换码的附录当中,获取了较正式的地位。这个最新版本称为Big5-2003。

包含字符:

共收录13,060个汉字及441个符号

编码方式:

用两个字节来为每个字符编码,第一个字节称为“高位字节”,第二个字节称为“低位字节”

注意,其和GBK等系列是不兼容的。

6 . UNICODE
上文提到UNICODE,这个UNICODE又是什么?

各国为了在计算机字符编码里面争夺自己国家的语言字符高地,谁也不让着谁,在发展自己的字符编码时也没打算兼容其他的字符编码。看起来,有些混乱了,我想看下你的新闻,还得安装下你的文字系统,这全球化发展还怎么进行呢?
于是,一个叫ISO的组织还是出手了,他们是直截了当地干,不管你地方性的字符编码,我要重新定义一套,包含全球的所有文化文字、符合等,还给这种方案起了个名字叫Universal Multiple-Octet Coded Character Set,简称UCS,俗称UNICODE
所以,这个UNICODE是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
话说的这么好听,UNICODE是怎么搞的呢?ISO着手搞这个UNICODE的时候是1990年的事了,内存发展已经有些长进了,用起来也没以前抠门了。于是这个UNICODE就被定义成两个字节表示一个字符,通通的两个字节啊,连ASCII都不放过,也是用两个字节。但是,对于ASCII这些原来用一个字节表示的字符,UNICODE保持其原来编码不变,只是将其扩展成两个字节而已,即在高字节补0。
这个UCS就是ISO定义的ISO 10646标准了,注意啊,UCS还不满足两个字节的,还有四个字节的,两个字节表示的叫UCS-2,四个字节的叫UCS-4。
那么这个UNICODE是怎么定义和分类字符的呢?看下面这个列表:

编码 表示字符范围
0000-007F C0控制符及基本拉丁文 (C0 Control and Basic Latin)
0080-00FF C1控制符及拉丁文补充-1 (C1 Control and Latin 1 Supplement)
0100-017F 拉丁文扩展-A (Latin Extended-A)
0180-024F 拉丁文扩展-B (Latin Extended-B)
0250-02AF 国际音标扩展 (IPA Extensions)
02B0-02FF 空白修饰字母 (Spacing Modifiers)
0300-036F 结合用读音符号 (Combining Diacritics Marks)
0370-03FF 希腊文及科普特文 (Greek and Coptic)
0400-04FF 西里尔字母(Cyrillic)
0500-052F 西里尔字母补充 (Cyrillic Supplement)
0530-058F 亚美尼亚语 (Armenian)
0590-05FF 希伯来文 (Hebrew)
0600-06FF 阿拉伯文 (Arabic)
0700-074F 叙利亚文 (Syriac)
0750-077F 阿拉伯文补充 (Arabic Supplement)
0780-07BF 它拿字母 (Thaana)
07C0-07FF 西非书面语言 (N'Ko)
0800-085F 阿维斯塔语及巴列维语(Avestan and Pahlavi)
0860-087F 曼达文字 (Mandaic)
0880-08AF 撒马利亚语 (Samaritan)
0900-097F 天城文 (Devanagari)
0980-09FF 孟加拉语 (Bengali)
0A00-0A7F 锡克教文 (Gurmukhi)
0A80-0AFF 古吉拉特文 (Gujarati)
0B00-0B7F 奥里亚文 (Oriya)
0B80-0BFF 泰米尔文 (Tamil)
0C00-0C7F 泰卢固文 (Telugu)
0C80-0CFF 卡纳达文 (Kannada)
0D00-0D7F 德拉维族语 (Malayalam)
0D80-0DFF 僧伽罗语 (Sinhala)
0E00-0E7F 泰文 (Thai)
0E80-0EFF 老挝文 (Lao)
0F00-0FFF 藏文 (Tibetan)
1000-109F 缅甸语 (Myanmar)
10A0-10FF 格鲁吉亚语(Georgian)
1100-11FF 朝鲜文 (Hangul Jamo)
1200-137F 埃塞俄比亚语 (Ethiopic)
1380-139F 埃塞俄比亚语补充 (Ethiopic Supplement)
13A0-13FF 切罗基语 (Cherokee)
1400-167F 统一加拿大土著语音节 (Unified Canadian Aboriginal Syllabics)
1680-169F 欧甘字母 (Ogham)
16A0-16FF 如尼文 (Runic)
1700-171F 塔加拉语 (Tagalog)
1720-173F 哈努诺文 (Hanunóo)
1740-175F 布希德文 (Buhid)
1760-177F 塔格班瓦文 (Tagbanwa)
1780-17FF 高棉语 (Khmer)
1800-18AF 蒙古文 (Mongolian)
18B0-18FF 加拿大原住民音节文字扩展 (Unified Canadian Aboriginal Syllabics Extended)
1900-194F 林布文 (Limbu)
1950-197F 德宏泰语 (Tai Le)
1980-19DF 新傣仂语 (New Tai Lue)
19E0-19FF 高棉语记号 (Kmer Symbols)
1A00-1A1F 布吉文 (Buginese)
1A20-1AAF 老傣文 (Tai Tham)
1AB0-1AFF 组合变音标记扩展 (Combining Diacritical Marks Extended)
1B00-1B7F 巴厘语 (Balinese)
1B80-1BB0 巽他语 (Sundanese)
1BC0-1BFF 巴塔克文 (Batak)
1C00-1C4F 雷布查语(Lepcha)
1C50-1C7F 桑塔利文(Ol Chiki)
1C80-1CDF 曼尼普尔语(Meithei/Manipuri)
1D00-1D7F 音标扩展 (Phonetic Extensions)
1D80-1DBF 音标扩展补充 (Phonetic Extensions Supplement)
1DC0-1DFF 结合附加符号补充 (Combining Diacritics Marks Supplement)
1E00-1EFF 拉丁文扩充附加 (Latin Extended Additional)
1F00-1FFF 希腊语扩充 (Greek Extended)
2000-206F 常用标点(General Punctuation)
2070-209F 上标及下标 (Superscripts and Subscripts)
20A0-20CF 货币符号 (Currency Symbols)
20D0-20FF 组合用记号 (Combining Diacritics Marks for Symbols)
2100-214F 字母式符号 (Letterlike Symbols)
2150-218F 数字形式 (Number Form)
2190-21FF 箭头 (Arrows)
2200-22FF 数学运算符 (Mathematical Operator)
2300-23FF 杂项工业符号 (Miscellaneous Technical)
2400-243F 控制图片 (Control Pictures)
2440-245F 光学识别符 (Optical Character Recognition)
2460-24FF 封闭式字母数字 (Enclosed Alphanumerics)
2500-257F 制表符 (Box Drawing)
2580-259F 方块元素 (Block Element)
25A0-25FF 几何图形 (Geometric Shapes)
2600-26FF 杂项符号 (Miscellaneous Symbols)
2700-27BF 印刷符号 (Dingbats)
27C0-27EF 杂项数学符号-A (Miscellaneous Mathematical Symbols-A)
27F0-27FF 追加箭头-A (Supplemental Arrows-A)
2800-28FF 盲文点字模型 (Braille Patterns)
2900-297F 追加箭头-B (Supplemental Arrows-B)
2980-29FF 杂项数学符号-B (Miscellaneous Mathematical Symbols-B)
2A00-2AFF 追加数学运算符 (Supplemental Mathematical Operator)
2B00-2BFF 杂项符号和箭头 (Miscellaneous Symbols and Arrows)
2C00-2C5F 格拉哥里字母(Glagolitic)
2C60-2C7F 拉丁文扩展-C (Latin Extended-C)
2C80-2CFF 科普特语 (Coptic)
2D00-2D2F 格鲁吉亚语补充 (Georgian Supplement)
2D30-2D7F 提非纳文 (Tifinagh)
2D80-2DDF 埃塞俄比亚语扩展 (Ethiopic Extended)
2E00-2E7F 追加标点 (Supplemental Punctuation)
2E80-2EFF CJK 部首补充 (CJK Radicals Supplement)
2F00-2FDF 康熙字典部首 (Kangxi Radicals)
2FF0-2FFF 表意文字描述符 (Ideographic Description Characters)
3000-303F CJK 符号和标点 (CJK Symbols and Punctuation)
3040-309F 日文平假名 (Hiragana)
30A0-30FF 日文片假名 (Katakana)
3100-312F 注音字母 (Bopomofo)
3130-318F 朝鲜文兼容字母 (Hangul Compatibility Jamo)
3190-319F 象形字注释标志 (Kanbun)
31A0-31BF 注音字母扩展 (Bopomofo Extended)
31C0-31EF CJK 笔画 (CJK Strokes)
31F0-31FF 日文片假名语音扩展 (Katakana Phonetic Extensions)
3200-32FF 封闭式 CJK 文字和月份 (Enclosed CJK Letters and Months)
3300-33FF CJK 兼容 (CJK Compatibility)
3400-4DBF CJK 统一表意符号扩展 A (CJK Unified Ideographs Extension A)
4DC0-4DFF 易经六十四卦符号 (Yijing Hexagrams Symbols)
4E00-9FBF CJK 统一表意符号 (CJK Unified Ideographs)
A000-A48F 彝文音节 (Yi Syllables)
A490-A4CF 彝文字根 (Yi Radicals)
A4D0-A4FF 老傈僳文 (Lisu)
A500-A63F 瓦伊语 (Vai)
A660-A6FF 统一加拿大土著语音节补充 (Unified Canadian Aboriginal Syllabics Supplement)
A700-A71F 声调修饰字母 (Modifier Tone Letters)
A720-A7FF 拉丁文扩展-D (Latin Extended-D)
A800-A82F 锡尔赫特文 (Syloti Nagri)
A840-A87F 八思巴字 (Phags-pa)
A880-A8DF 索拉什特拉文 (Saurashtra)
A8E0-A8FF 天城文扩展 (Devanagari Extended)
A900-A92F 克耶里字母 (Kayah Li)
A930-A95F 勒姜字母 (Rejang)
A960-A97F 谚文扩展-A (Hangul Jamo Extended-A)
A980-A9DF 爪哇语 (Javanese)
A9E0-A9FF 缅甸文扩展-B (Myanmar Extended-B)
AA00-AA5F 占语字母 (Cham)
AA60-AA7F 缅甸文扩展-A (Myanmar Extended-A)
AA80-AADF 越南傣文 (Tai Viet)
AAE0-AAFF 曼尼普尔文扩展 (Meetei Mayek Extensions)
AB00-AB2F 埃塞俄比亚语字母扩展-A (Ethiopic Extended-A)
AB30-AB6F 拉丁文扩展-E (Latin Extended-E)
AB70-ABBF 切罗基语补充 (Cherokee Supplement)
ABC0-ABFF 曼尼普尔文 (Meetei Mayek)
AC00-D7AF 朝鲜文音节 (Hangul Syllables)
D800-DB7F 高位替代字符 (High Surrogates)
DB80-DBFF 高位专用替代字符 (High Private Use Surrogates)
DC00-DFFF 低位替代字符 (Low Surrogates)
E000-F8FF 私用区 (Private Use Zone)
F900-FAFF CJK 兼容象形文字 (CJK Compatibility Ideographs)
FB00-FB4F 字母表达形式 (Alphabetic Presentation Form)
FB50-FDFF 阿拉伯表达形式A (Arabic Presentation Form-A)
FE00-FE0F 变量选择符 (Variation Selector)
FE10-FE1F 竖排形式 (Vertical Forms)
FE20-FE2F 组合用半符号 (Combining Half Marks)
FE30-FE4F CJK 兼容形式 (CJK Compatibility Forms)
FE50-FE6F 小型变体形式 (Small Form Variants)
FE70-FEFF 阿拉伯表达形式B (Arabic Presentation Form-B)
FF00-FFEF 半型及全型形式 (Halfwidth and Fullwidth Form)
FFF0-FFFF 特殊 (Specials)

看起来好像很美好,问题还是存在的。计算机怎么知道几个字节表示一个字符呢?(注意字符和字节的概念啊),还有啊,ASCII就一个字节,你弄到UNICODE来表示却要两个字节,多浪费啊,至少欧美这种英文只用ASCII的国家不喜欢这套东西吧。


7 . UTF
于是,一个叫 UTF的东西出现了,没错,就是你知道的UTF-8,UTF-16和UTF-32的那个UTF。
UTF是UNICODE基于传输的一种格式,全称叫
Unicode Transformation Format,顾名思义,UTF-8就是每次传输8位数据,UTF-16是每次传输16位数据,那么UTF-32就是每次传输32位数据。
其中UTF-8用的最广泛了,Linux系统里面通通都用UTF-8了。现在来看看UTF-8是怎么定义这个Format的。

UTF-8编码规则:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。

UTF-8转换表表示如下


8. 后话

就这样讲完了?No!

Codepage是啥?

网页乱码是怎么回事?

什么是UTF-8的BOM?

UCS-2的Bid End和Little End?

UTF-8、UTF-16、UTF-32,GBK,Big5等等怎么转换?

iconv玩过吗?

什么CJK统一汉字?

汉字进入信息时代后发展前景怎样?

……

篇幅太长了,统统下回分解!


参考:

字符编码的前世今生

(https://tgideas.qq.com/webplat/info/news_version3/804/808/811/m579/201307/218730.shtml)
关注公众号号“ 嵌入式软件实战派”,获得更多知识干货。

嵌入式软件实战派 专注嵌入式软件开发领域知识传授,包括C语言精粹,RTOS原理与使用,MCU驱动开发,AUTOSAR搭建,软件架构方法设计等。
评论
  • 前言近年来,随着汽车工业的快速发展,尤其是新能源汽车与智能汽车领域的崛起,汽车安全标准和认证要求日益严格,应用范围愈加广泛。ISO 26262和ISO 21448作为两个重要的汽车安全标准,它们在“系统安全”中扮演的角色各自不同,但又有一定交集。在智能网联汽车的高级辅助驾驶系统(ADAS)应用中,理解这两个标准的区别及其相互关系,对于保障车辆的安全性至关重要。ISO 26262:汽车功能安全的基石如图2.1所示,ISO 26262对“功能安全”的定义解释为:不存在由于电子/电气系统失效引起的危害
    广电计量 2025-01-02 17:18 153浏览
  • 在科技飞速发展的今天,机器人已经逐渐深入到我们生活和工作的各个领域。从工业生产线上不知疲倦的机械臂,到探索未知环境的智能探测机器人,再到贴心陪伴的家用服务机器人,它们的身影无处不在。而在这些机器人的背后,C 语言作为一种强大且高效的编程语言,发挥着至关重要的作用。C 语言为何适合机器人编程C 语言诞生于 20 世纪 70 年代,凭借其简洁高效、可移植性强以及对硬件的直接操控能力,成为机器人编程领域的宠儿。机器人的运行环境往往对资源有着严格的限制,需要程序占用较少的内存和运行空间。C 语言具有出色
    Jeffreyzhang123 2025-01-02 16:26 129浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 88浏览
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 91浏览
  • 国际标准IPC 标准:IPC-A-600:规定了印刷电路板制造过程中的质量要求和验收标准,涵盖材料、外观、尺寸、焊接、表面处理等方面。IPC-2221/2222:IPC-2221 提供了用于设计印刷电路板的一般原则和要求,IPC-2222 则针对高可靠性电子产品的设计提供了进一步的指导。IPC-6012:详细定义了刚性基板和柔性基板的要求,包括材料、工艺、尺寸、层次结构、特征等。IPC-4101:定义了印刷电路板的基板材料的物理和电气特性。IPC-7351:提供了元件封装的设计规范,包括封装尺寸
    Jeffreyzhang123 2025-01-02 16:50 156浏览
  • Matter加持:新世代串流装置如何改变智能家居体验?随着现在智能家庭快速成长,串流装置(Streaming Device,以下简称Streaming Device)除了提供更卓越的影音体验,越来越多厂商开始推出支持Matter标准的串流产品,使其能作为智能家庭中枢,连结多种智能家电。消费者可以透过Matter的功能执行多样化功能,例如:开关灯、控制窗帘、对讲机开门,以及操作所有支持Matter的智能家电。此外,再搭配语音遥控器与语音助理,打造出一个更加智能、便捷的居家生活。支持Matter协议
    百佳泰测试实验室 2025-01-03 10:29 69浏览
  • 从无到有:智能手机的早期探索无线电话装置的诞生:1902 年,美国人内森・斯塔布菲尔德在肯塔基州制成了第一个无线电话装置,这是人类对 “手机” 技术最早的探索。第一部移动手机问世:1938 年,美国贝尔实验室为美国军方制成了世界上第一部 “移动” 手机。民用手机的出现:1973 年 4 月 3 日,摩托罗拉工程师马丁・库珀在纽约曼哈顿街头手持世界上第一台民用手机摩托罗拉 DynaTAC 8000X 的原型机,给竞争对手 AT&T 公司的朋友打了一个电话。这款手机重 2 磅,通话时间仅能支持半小时
    Jeffreyzhang123 2025-01-02 16:41 138浏览
  • 影像质量应用于多个不同领域,无论是在娱乐、医疗或工业应用中,高质量的影像都是决策的关键基础。清晰的影像不仅能提升观看体验,还能保证关键细节的准确传达,例如:在医学影像中,它对诊断结果有着直接的影响!不仅如此,影像质量还影响了:▶ 压缩技术▶ 存储需求▶ 传输效率随着技术进步,影像质量的标准不断提高,对于研究与开发领域,理解并提升影像质量已成为不可忽视的重要课题。在图像处理的过程中,硬件与软件除了各自扮演着不可或缺的基础角色,有效地协作能够确保图像处理过程既高效又具有优异的质量。软硬件各扮演了什么
    百佳泰测试实验室 2025-01-03 10:39 63浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 93浏览
  • 【工程师故事】+半年的经历依然忧伤,带着焦虑和绝望  对于一个企业来说,赚钱才是第一位的,对于一个人来说,赚钱也是第一位的。因为企业要活下去,因为个人也要活下去。企业打不了倒闭。个人还是要吃饭的。企业倒闭了,打不了从头再来。个人失业了,面对的不仅是房贷车贷和教育,还有找工作的焦虑。企业说,一个公司倒闭了,说明不了什么,这是正常的一个现象。个人说,一个中年男人失业了,面对的压力太大了,焦虑会摧毁你的一切。企业说,是个公司倒闭了,也不是什么大的问题,只不过是这些公司经营有问题吧。
    curton 2025-01-02 23:08 183浏览
  • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
    Industio_触觉智能 2025-01-03 11:39 63浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 97浏览
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 58浏览
  •  在这个日新月异的科技时代,智能家居正以前所未有的速度融入我们的日常生活,从智能灯光到温控系统,从安防监控到语音助手,每一处细节都透露着科技的温度与智慧。而在这场智能化浪潮中,一个看似不起眼却至关重要的组件——晶体管光耦,正扮演着连接物理世界与数字世界的隐形桥梁角色,默默推动着智能家居行业的发展与革新。 晶体管光耦——智能家居的“神经递质”晶体管光耦,作为一种能够将电信号转换为光信号,再通过光信号控制另一侧电路开关的电子元器件,其独特的工作原理使得它在隔离传输、抗干扰及保护电
    晶台光耦 2025-01-02 16:19 107浏览
  • 本文继续介绍Linux系统查看硬件配置及常用调试命令,方便开发者快速了解开发板硬件信息及进行相关调试。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。查看系统版本信息查看操作系统版本信息root@ido:/# cat /etc/*releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=20.04DISTRIB_CODENAME=focalDIS
    Industio_触觉智能 2025-01-03 11:37 67浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦