字 符 编码
简单字 符 集
[编辑]按照惯例,
现代编码模型
[编辑]抽象 字 符 表 (Abstract character repertoire)是 一个系统支持的所有抽象字符的集合。字 符 表 可 以是封 闭的,即 除 非 创建一 个新的 标准(ASCII和 多数 ISO/IEC 8859系列 都 是 这样的 例 子 ),否 則 不 允 许添加 新 的 符号 ;字 符 表 也可以是开放的 ,即 允 许添加 新 的 符号 (統一 碼和一定 程度 上 代 碼頁是 这方面 的 例 子 )。特定 字 符 表 中 的 字 符 反映 了 如何 将 书写系 统分解 成 线性信 息 单元的 决定。例 如拉丁 、希 腊和斯拉夫 字母 表 分 为字母 、数字 、变音符号 、标点和 如空格 这样的 一些少数特殊字符,它们都 能 按照一种简单的线性序列排列(尽 管 对它们的处理需要 另外的 规则,如带有 变音符号 的 字母 这样的 特定 序列 如何 解 释——但 这不属 于字符 表 的 范畴)。为了方便 起 见,这样的 字 符 表 可 以包括 预先编号的 字母 和 变音符号 的 组合。其它的 书写系 统,如阿拉 伯 语和希 伯 莱语,由 于要适应双 向 文字 和 在 不 同情 形 下 按照不同 方式 交叉 在 一 起 的 字形 ,就使用 更 为复杂的符号 表 表示 。- 编码
字 符 集 (CCS:Coded Character Set)是 将 字 符 集 中 每 个字符 映 射 到 1个坐标(整数 值对:x, y)或 者 表示 为1个非负整数 。字 符 集 及码位 映 射 称 为编码字符 集 。例 如,在 一个给定的字符表中,表示 大 写 拉 丁字 母 “A”的 字 符 被 赋予整数 65、字 符 “B”是 66,如此继续下 去 。多 个编码字符 集 可 以表示 同 样的字 符 表 ,例 如ISO-8859-1和 IBM的 代 码页037和代 码页500含蓋同 样的字 符 表 但 是 将 字 符 映 射 为不同 的 整数 。由 此产生 了 编码空 间(encoding space)的 概念 :简单说就是 包含 所有 字 符 的 表 的 维度。可 以用一对整数来描述,例 如:GB 2312的 汉字编码空 间是94 x 94。可 以用一个整数来描述,例 如:ISO-8859-1的 编码空 间是256。也可以用字 符 的 存 储单元 尺寸 来 描述,例 如:ISO-8859-1是 一 个8比 特 的 编码空 间。编码空 间还可 以用其子集 来 表 述 ,如行、列 、面 (plane)等 。编码空 间中的 一 个位置 (position)称 为码位(code point)。一个字符所占用的码位称为码位值(code point value)。1个编码字符 集 就是把 抽象 字 符 映 射 为码位 值。 字 符 编码表 (CEF:Character Encoding Form),也称为"storage format",是 将 编码字 符 集 的 非 负整数 值(即 抽象 的 码位)转换成 有限 比 特 长度的 整 型 值(称 为码元code units)的 序列 。这对于定长编码来说是个到自身 的 映 射 (null mapping),但 对于变长编码来 说,该映射 比 较复杂,把 一些码位映射到一个码元,把 另外一些码位映射到由多个码元组成的序列。例 如,使用 16比 特 长的存 储单元 保存 数字 信 息 ,系 统每个单元 只 能 够直接 表示 从0到 65,535的 数 值,但 是 如果使用 多 个16位 单元就能够表示 更 大 的 整数 。这就是 CEF的 作用 ,它可以把Unicode从0到 140万的码空间范围的每个码位映射到单个或多个在0到 65,5356范围内 的 码值。最 简单的 字 符 编码表 就是單純 地 选择足 够大的 单位,以保证编码字符 集中 的 所有 数 值能够直接 编码(一个码位对应一个码值)。这对于能够用使用 八位元组來表示的编码字符集(如多数 传统的 非 CJK的 字 符 集 编码)是 合理 的 ,对于能 够使用 十 六位元來表示的编码字符集(如早期 版本 的 Unicode)来 说也足 够合理 。但 是 ,随 着 编码字 符 集 的 大小 增加 (例 如,现在的 Unicode的 字 符 集 至 少 需要 21位 才能 全部 表示 ),这种直接 表示法 变得越来 越 没 有效 率 ,并且很难让现有 计算机 系 统适应更大 的 码值。因 此,许多使用 新 近 版本 Unicode的 系 统,或 者 将 Unicode码位對應 為 可 变长度 的 8位 字 节序列 的 UTF-8,或 者 将 码位對應 为可变长度 的 16位 序列 的 UTF-16。字 符 编码方案 (CES:Character Encoding Scheme),也称作 "serialization format"。將 定 长的整 型 值(即 码元)映 射 到 8位 字 节序列 ,以便编码后 的 数 据 的 文 件 存 储或网络传输。在 使用 Unicode的 场合,使用 一个简单的字符来指定字节顺序是大 端 序 或 者 小 端 序 (但 对于UTF-8来 说并不 需要 专门指 明 字 节序)。然 而,有 些复杂的字 符 编码机 制 (如ISO/IEC 2022)使用 控 制 字 符 转义序列 在 几种编码字 符 集 或 者 用 于减小 每 个单元 所用 字 节数的 压缩机 制 (如SCSU、BOCU和 Punycode)之 间切换。- 传输编码语法(transfer encoding syntax),
用 于处理 上 一层次的字符编码方案提供的字节序列。一般其功能包括两种:一是把字节序列的值映射到一套更受限制的值域内,以满足 传输环境的 限 制 ,例 如Email传输时Base64或 者 quoted-printable,都 是 把 8位 的 字 节编码为7位 长的数 据 ;另一是压缩字节序列的值,如LZW或 者 行程 长度编码等 无损压缩技 术。
字 符 集 、代 码页,与 字 符 映 射
[编辑]术语
码元(Code Unit,也称「
IBM
Unix
字 符 编码(不全 )
[编辑]西欧 标准
[编辑]- Windows-1250
- Windows-1251:
用 于西里 尔字母 表 - Windows-1252
- Windows-1253
- Windows-1254
- Windows-1255:
用 于希 伯 莱语 - Windows-1256:
用 于阿 拉 伯 语 - Windows-1257
- Windows-1258:
用 于越 南 语
亞 洲 字 符 集
[编辑]臺灣
[编辑]日本
[编辑]中國 大陸 及港澳
[编辑]朝 鲜半岛
[编辑]越 南
[编辑]印度
[编辑]統一 碼
[编辑]字 符 转换工具
[编辑]- 网页浏览
器 –大 多数 现代的 网页浏览器 都 具有 此功能 。一般是在菜单"查看"(View)/"字 符 编码"(Character Encoding) - iconv –
程 序 与 编程API,用 于字符 编码转换 - convert_encoding.py –
基 于Python的 转换工具 .[2] - decodeh.py –
用 于启发性猜测编码方案 的 算法 与 模 块.[3] 國際 統一 碼部件 –一 套C语言与 Java语言的 开源库,由 IBM提供 ,用 于統一碼等多语言编码的转换、实现.- chardet – Mozilla
的 编码自 动检测代码的Python语言实现. 新 版本 的 Unix命令 File做字符 编码的 检测.(cygwin与 mac都 有 此命令 )
- Encoding.Convert – .NET API[8]
- MultiByteToWideChar/WideCharToMultiByte – Windows API[9]
- cscvt –转换
工具 [10] - enca –
分析 编码方法 [11]
参考 文献
[编辑]- ^ Glossary of Unicode Terms. [2012-04-07]. (
原始 内容 存 档于2015-12-26). - ^ Homepage of Michael Goerz – convert_encoding.py. [2012-03-23]. (
原始 内容 存 档于2010-10-28). - ^ Decodeh – heuristically decode a string or text file. [2012-03-23]. (
原始 内容 存 档于2008-01-08). - ^ Recode – GNU Project – Free Software Foundation (FSF). [2012-03-23]. (
原始 内容 存 档于2021-02-10). - ^ Utrac Homepage. [2006-05-12]. (
原始 内容 存 档于2021-01-25). - ^ Convmv – converts filenames from one encoding to another. [2012-03-23]. (
原始 内容 存 档于2018-06-11). - ^ Extremely Naive Charset Analyser. [2012-03-23]. (
原始 内容 存 档于2010-12-04). - ^ Microsoft .NET Framework Class Library – Encoding.Convert Method. [2012-03-23]. (
原始 内容 存 档于2012-04-21). - ^ MultiByteToWideChar/WideCharToMultiByte – Convert from ANSI to Unicode & Unicode to ANSI. [2012-03-23]. (
原始 内容 存 档于2015-02-12). - ^ Character Set Converter. [2012-03-23]. (
原始 内容 存 档于2012-03-26). - ^ Extremely Naive Charset Analyser. [2012-03-23]. (
原始 内容 存 档于2012-03-15).
參 閱
[编辑]- Category:
字 符 编码—关于通用 字 符 编码的 文章 - Category:
字 符 集 —关于特殊 字 符 编码的 文章 亂 碼—非 映 射 字 符 集 代 码页字形 位 圖 像 素 體 素 中 文 軟體中 文 系統
外部 链接
[编辑]- Character sets registered by Internet Assigned Numbers Authority(页面
存 档备份,存 于互联网档案 馆) - Unicode Technical Report #17: Character Encoding Model
- SIL's freeware fonts, editors and documentation (页面
存 档备份,存 于互联网档案 馆) See SIL - ICU Converter Explorer (页面
存 档备份,存 于互联网档案 馆) - The Cyrillic Charset soup(页面
存 档备份,存 于互联网档案 馆) - Early history of character set standardization
- Character Sets And Code Pages At The Push Of A Button (页面
存 档备份,存 于互联网档案 馆) - A complete introduction to Japanese character encodings
- A tutorial on character code issues (页面
存 档备份,存 于互联网档案 馆) - Online Char (ASCII), HEX, Binary, Base64, etc... Encoder/Decoder with MD2, MD4, MD5, SHA1+2, etc. hashing algorithms
- Universal Cyrillic decoder (页面
存 档备份,存 于互联网档案 馆),一个用来帮助恢复由于错误字符编码产生的不可读的西里 尔字母 的 在 线程序 (以及其它的 一 些程序 ). - Introduction to i18n(页面
存 档备份,存 于互联网档案 馆),请参阅Chapter 3 - Important Concepts for Character Coding Systems - 汉字
字 符 编码查询 精 确解释Unicode (页面存 档备份,存 于互联网档案 馆)
|