1. ASCII码 2. 字符集 2.1 Unicode 统一码 万国码 2.1.1 Unicode的10大设计原则 2.1.2 Unicode联盟 2.2 UCS 通用编码字符集 2.3 Unicode vs UCS (ISO 10646) 3. 字符编码 3.1 现代编码模型 3.2 字符转换工具 3.3 Unicode的具体实现 3.4 Unicode编码比较 4. 更多相关wiki链接 5. 补充: 字符集检测 6. 更多参考
Unicode 系统 简单的说:
https://en.wikipedia.org/wiki/ASCII
https://zh.wikipedia.org/wiki/ASCII
ASCII (American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本EASCII则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。ASCII是 IEEE里程碑 之一。
But:
ASCII的局限在于只能显示26个基本拉丁字母、阿拉伯数字和英式标点符号,因此只能用于显示现代美国英语(且处理naïve、café、élite等外来语时,必须去除附加符号)。虽然EASCII解决了部分西欧语言的显示问题,但对更多其他语言无能为力。
So:
为了让计算机方便处理多国文字,所以就有了Unicode(统一码 万国码). 现在的软件系统大多采用Unicode。
https://www.unicode.org/versions/
https://en.wikipedia.org/wiki/Unicode
https://zh.wikipedia.org/wiki/Unicode
Unicode (中文: 万国码、国际码、统一码、单一码) 是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。
该标准由非盈利的Unicode协会维护,截至2019年5月,最新版本Unicode 12.1包含字符超过13万个,涵盖150个现代和历史脚本,以及多个符号集和表情符号。
Unicode标准的字符库与ISO/IEC 10646同步,并且两者都是相同的。定义了每个字符的唯一标识(即字符的数字值,或者叫做代码点)
https://zh.wikipedia.org/wiki/Unicode#10大设计原则
《The Unicode Standard Version 6.2 – Core Specification》文档给出了 Unicode 的十大设计原则:
http://www.unicode.org/
https://en.wikipedia.org/wiki/Unicode_Consortium
https://zh.wikipedia.org/wiki/統一碼聯盟
Unicode协会(Unicode的公司)是一个非营利组织。它的主要目的是维护和发布Unicode标准,因为现存编码不能够在多语言电脑环境中使用,而且字符数有局限。
Unicode联盟有来自多个国家政府和各大软件商的代表参与。
Unicode联盟积极与各标准制订机构合作,包括国际标准化组织(ISO)、国际电工委员会(IEC)、万维网联盟(W3C)、互联网工程工作小组(IETF)和欧洲计算机制造协会(ECMA)等。
投票成员包括对文本处理标准感兴趣的计算机软件和硬件公司,包括Adobe,Apple Inc.,Berkeley,Emojipedia,Facebook,Google,华为,IBM,Microsoft,Monotype,Oracle Corporation,Yahoo!。和SAP SE。与Unicode标准相关的技术决定由Unicode技术委员会(UTC)做出。
https://en.wikipedia.org/wiki/Universal_Coded_Character_Set
https://zh.wikipedia.org/wiki/通用字符集
通用字符集(英语:Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。
https://zh.wikipedia.org/wiki/通用字符集#Unicode和ISO_10646的关系
https://en.wikipedia.org/wiki/Universal_Coded_Character_Set#Relationship_with_Unicode
历史上存在两个独立的尝试创立单一字符集的组织,因此最初制定了不同的标准。
1991年前后,两个项目的参与者都认识到,世界不需要两个不兼容的字符集。于是,它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。
从Unicode 2.0开始,Unicode采用了与ISO 10646-1相同的字库和字码;ISO也承诺,ISO 10646将不会替超出U+10FFFF的UCS-4编码赋值,以使得两者保持一致。
两个项目仍都独立存在,并独立地公布各自的标准。但统一码联盟和ISO/IEC JTC1/SC2都同意保持两者标准的码表兼容,并紧密地共同调整任何未来的扩展。
在发布的时候,Unicode一般都会采用有关字码最常见的字体,但ISO 10646一般都尽可能采用Century字体。
ISO/IEC 10646-1:1993 = Unicode 1.1 (1993)
...
ISO/IEC 10646:2017 = Unicode 12.0 (2019.05)
https://zh.wikipedia.org/wiki/通用字符集#Unicode和ISO_10646的异同
https://en.wikipedia.org/wiki/Universal_Coded_Character_Set#Differences_from_Unicode
https://en.wikipedia.org/wiki/Character_encoding
https://zh.wikipedia.org/wiki/字符编码
字符编码(英语:Character encoding)、字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。
https://zh.wikipedia.org/wiki/字符编码#现代编码模型
https://en.wikipedia.org/wiki/Character_encoding#Unicode_encoding_model
https://zh.wikipedia.org/wiki/字符编码#字符转换工具
https://en.wikipedia.org/wiki/Character_encoding#Character_encoding_translation
| Cross-platform | Web browsers | 大多数现代Web浏览器均具有自动字符编码检测功能。 一般是在菜单"查看"(View)/"字符编码"(Character Encoding) |
| International Components For Unicode |
一套C语言与Java语言的开源库,由IBM提供,用于Unicode等多语言编码的转换、实现。可从ICU4C使用uconv。 | |
| iconv | 程序与编程API,用于字符编码转换 | |
| convert_encoding.py | 基于Python的实用程序,用于在任意编码和行尾之间转换文本文件。 | |
| decodeh.py | 用于启发性猜测编码方案的算法与模块. | |
| luit | 将输入和输出的编码转换为交互运行的程序的程序 | |
| file | 新版本的Unix命令File做字符编码的检测.(cygwin与mac都有此命令) | |
| chardet | Mozilla的编码自动检测代码的Python语言实现. | |
| charset | 具有简单接口的C++模板库,可在C++/用户定义的流之间进行转换。 Charset定义了许多字符集,并允许您使用支持endianness的 Unicode格式。 |
|
| Linux | cmv | 用于文件名转码的简单工具。 |
| convmv | 将文件名从一种编码转换为另一种。 | |
| cstocs | 将捷克语和斯洛伐克语的文件内容从一种编码转换为另一种编码。 | |
| recode | 将文件内容从一种编码转换为另一种 | |
| utrac | 将文件内容从一种编码转换为另一种编码。 | |
| enca | 分析给定文本文件的编码。 | |
| Windows | enca | 分析编码方法 |
| Encoding.Convert | .NET API | |
| cscvt | 转换工具 | |
| MultiByteToWideChar /WideCharToMultiByte |
Windows API 从ANSI转换为Unicode和从Unicode转换为ANSI |
映射和编码
https://en.wikipedia.org/wiki/Unicode#Mapping_and_encodings
Unicode转换格式和通用编码字符集
https://en.wikipedia.org/wiki/Unicode#Unicode_Transformation_Format_and_Universal_Coded_Character_Set
Unicode定义了两种映射方法:Unicode转换格式(UTF)编码和通用编码字符集(UCS)编码。UCS-2是UTF-16的过时子集;UCS-4和UTF-32在功能上是等效的。
https://zh.wikipedia.org/wiki/Unicode#Unicode_的编码和实现
大概来说,Unicode 编码系统可分为编码方式和实现方式两个层次。
Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对 Unicode 编码的实现方式有所不同。
Unicode 的实现方式称为 Unicode转换格式(Unicode/UCS Transformation Format,简称为 UTF),即把Unicode字符转换为某种格式之意。Unicode可以通过不同的字符编码实现。
常见的有:
其他还有:
https://en.wikipedia.org/wiki/Comparison_of_Unicode_encodings
八位环境
| 代码范围(十六进制) | 转换为十进制 HEX2DEC(A2) |
区间 容量 |
UTF-8 | UTF-16 | UTF-32 | UTF-EBCDIC | GB 18030 | ||||
| 000000 | - | 00007F | 0 | - | 127 | 127 | 1 | 2 | 4 | 1 | 1 |
| 000080 | - | 00009F | 128 | - | 159 | 31 | 2 | 2 继承GB 2312/GBK (例如多数汉字) 4 是其他所有字符。 |
|||
| 0000A0 | - | 0003FF | 160 | - | 1023 | 863 | 2 | ||||
| 000400 | - | 0007FF | 1024 | - | 2047 | 1023 | 3 | ||||
| 000800 | - | 003FFF | 2048 | - | 16383 | 14335 | 3 | ||||
| 004000 | - | 00FFFF | 16384 | - | 65535 | 49151 | 4 | ||||
| 010000 | - | 03FFFF | 65536 | - | 262143 | 196607 | 4 | 4 | 4 | ||
| 040000 | - | 10FFFF | 262144 | - | 1114111 | 851967 | 5 | ||||
字体列表
https://en.wikipedia.org/wiki/List_of_typefaces#Unicode_fonts
开源Unicode字体
https://en.wikipedia.org/wiki/Open-source_Unicode_typefaces
比较
https://en.wikipedia.org/wiki/Open-source_Unicode_typefaces#Comparison
https://en.wikipedia.org/wiki/GB_2312
汉字编码
https://en.wikipedia.org/wiki/Chinese_character_encoding
中国文字
https://en.wikipedia.org/wiki/Chinese_characters
5.5繁体中文,简体中文和日语的比较
中日韩字符
https://en.wikipedia.org/wiki/CJK_characters
国际化中,CJK是中文,日文和韩文语言的统称,它们的书写系统中都包含汉字和派生词(统称CJK字符),有时还与其他脚本配对。
有时会包含越南语,因此缩写为CJKV,因为越南历史上也使用汉字。总的来说,CJKV人物通常包括汉字在中国,汉字,假名在日本,汉字,韩文在韩国和干旱自我或喃在越南。
https://en.wikipedia.org/wiki/Unicode_font
Unicode原则上与字体本身无关,将字体视为实现选择。
任何给定的角色都可能有许多变种,从更常见的粗体,斜体和基本字母形式到复杂的装饰风格。如果可以使用Unicode标准中定义的代码点访问字体中的字形,则该字体为“ Unicode兼容”。
由于TrueType和OpenType支持Unicode ,因此广泛使用基于Unicode的免费和零售字体。这些字体格式将Unicode代码点映射到字形,但是TrueType字体限制为65,535个字形。
Utility software 实用程序软件
https://en.wikipedia.org/wiki/Unicode_font#Application_of_Unicode_fonts
这是一些可以识别字体文件中存在的字符的实用程序软件的选择:
Character Map 字符映射表,Microsoft Windows附带的小程序 https://en.wikipedia.org/wiki/Character_Map_(Windows)
Font Book,Mac OS附带的应用程序 https://en.wikipedia.org/wiki/Font_Book
GNOME Character Map GNOME字符映射表,GNOME桌面环境随附的应用程序 https://en.wikipedia.org/wiki/GNOME_Character_Map
BabelMap,用于Windows的第三方软件 https://en.wikipedia.org/wiki/GNOME_Character_Map
字体管理软件
https://en.wikipedia.org/wiki/Font_management_software
https://en.wikipedia.org/wiki/TrueType
TrueType字体是一种轮廓字体 标准由开发苹果在80年代末期作为竞争对手的Adobe的Type 1字体中使用的PostScript。
它已成为经典Mac OS,macOS和Microsoft Windows操作系统上最常见的字体格式。
TrueType的主要优点最初是为字体开发人员提供了高度控制权,可以精确控制各种字体大小的字体的显示方式,直至特定像素。
由于当今使用的渲染技术千差万别,因此TrueType字体不再能够确定像素级别的控制。
https://en.wikipedia.org/wiki/OpenType
OpenType是可缩放计算机字体的格式。它建立在其前身TrueType的基础上,保留了TrueType的基本结构,并添加了许多复杂的数据结构来规定印刷行为。
OpenType是Microsoft Corporation的注册商标。
该规范在Microsoft萌发,在1996年公开发布之时Adobe系统也做出了贡献。
由于具有广泛的可用性和印刷灵活性,包括处理世界上所有书写系统的各种行为的规定,因此OpenType字体通常在主要的计算机平台上使用。
https://en.wikipedia.org/wiki/List_of_input_methods_for_Unix_platforms
Unix平台的输入法列表
内容嗅探
https://en.wikipedia.org/wiki/Content_sniffing
内容嗅探(也称为媒体类型嗅探或MIME嗅探)是一种检查字节流的内容以尝试推断其中数据的文件格式的实践。内容嗅探通常用于补偿缺少准确的元数据,否则将需要正确的元数据才能正确解释文件。内容嗅探技术倾向于使用多种技术的混合物,这些技术依赖于大多数文件格式中的冗余:寻找文件签名和幻数,以及启发式包括搜索著名的代表性子字符串,使用字节频率和n- gram表以及贝叶斯推断。
https://en.wikipedia.org/wiki/Browser_sniffing
字符集检测
https://en.wikipedia.org/wiki/Charset_detection
https://en.wikipedia.org/wiki/International_Components_for_Unicode
Unicode的国际组件 -一个可以执行字符集检测的库。
Unicode 和 UTF-8 有什么区别?
https://www.zhihu.com/question/23374078
字符编码笔记:ASCII,Unicode 和 UTF-8
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
UTF-8 的编码规则很简单,只有二条:
英文: awesome-unicode
https://eng.getwisdom.io/awesome-unicode/
Unicode标准定义了当今所有主要语言中使用的字符代码。文字包括欧洲字母文字,中东从右到左文字以及许多亚洲文字。
Unicode标准还包括标点符号,变音符号,数学符号,技术符号,箭头,装饰符号,表情符号等。
很棒的软件包和库
https://eng.getwisdom.io/awesome-unicode/#awesomepackageslibraries
Unicode标准的原则
https://eng.getwisdom.io/awesome-unicode/#principlesoftheunicodestandard
About the Unicode Character Database
https://www.unicode.org/ucd/
https://dumps.codepoints.net/
语言工具
https://en.wikipedia.org/wiki/LanguageTool
LanguageTool是一个免费的开源 语法检查器,其所有功能都可以下载。
https://languagetool.org/
原文:https://www.cnblogs.com/sztom/p/12154470.html