UTF-8,ISO 10646的一种转换格式( 三 )


注重——上面解码算法的实际实现应该进行安全保护 , 以便处理解码无效的系列 。例如 ,
一个幼稚的实现可能(错误)解码无效的UTF-8系列C080为字符U 0000 , 它可能导致安
全问题和/或其他问题 。参见下面的安全考虑部分 。
更具体的算法和公式可以在[FSS_UTF] , [UNICODE]或[ISO-10646]附录R中找到 。
3、标准版本
ISO/IEC10646通过发布修正进行了一次次更新 。同样地 , Unicode标准的不同版本有:
1.0,1.1和2.0 。每一个新版本废除和替换了旧版本 , 但是实现和较重要的数据没有马上更新 。
一般地 , 增加新字符的改变不会对旧数据引发非凡的问题 。然而 , ISO/IEC10646修正5
移动和扩展了韩文Hangul组 , 因此包含Hangul字符的以前版本数据在新版本下无效 。Unicode
2.0对Unicode1.1有同样的不同 。答应这样不协调变化的正式理由是在实现上和数据中不存
在Hangul 。这个改变事件被称为“韩文混乱” , 相关的委员会保证永远不会再进行这样不协
调的改变 。
关于MIME字符编码标签 , 新版本和特定的任何不协调的改变都有前因后果 , 第5节将
进行讨论 。
4、例子
UCS-2系列"A."(0041,2262,0391,002E)用UTF-8编码
如下:
41E289A2CE912E
对韩文"hangugo"(D55C,AD6D,C5B4) , 表示Hangul字符的UCS-2序列可以编码如下:
ED959CEAB5ADEC96B4
对日文"nihongo"(65E5,672C,8A9E) , 表示汉字的UCS-2序列可以编码如下:
E697A5E69CACE8AA9E
5、MIME注册
本备忘录计划服务于MIME字符集参数[CHARSET-REG]注册基础 。被提到的字符集参
数值是UTF-8 。这个字符标签媒介类型包含由ISO/IEC10646指令组成的字符文本 , ISO/IEC
10646包括了直到修正5(韩文组)的所有修正版本 。此类型使用上面概述的编码方案进行8
比特字节序列编码 。UTF-8适合于在文本的上层类型下使用MIME内容类型
值得注重的是 , "UTF-8"标签不包含一般由ISO/IEC10646提交的版本标识 。特意这样做
的原因如下:
MIME字符集标签的设计仅用于给予需要翻译从有线接收的字节序列到字符序列的信
息 , 而没有其他的用途(参见RFC2045,2.2节[MIME]) 。只要字符集标准没有不兼容的改变 ,
版本数字没有意义 , 因为一方接收到不熟悉的新分配字符 , 通过标签的理解得不到任何东西 。
标签可能被随时接收 , 标签自己对新字符不提供任何信息 。
因此 , 只要标准适当地改进 , 拥有标识版本标签的益处是显而可见 , 但对依靠于版本的
标签不利因素为:当旧的应用收到一个包含新的不熟悉标签的数据时 , 它可能熟悉标签失败 ,
而不能完成对数据的处理;而一个普通的熟悉标签会引发大多数正确的数据处理 , 它可能不
包含任何新的字符 。
现今“韩文混乱”(ISO/IEC10646修正5)是一种不协调的变化 , 理论上同上面描述的与
版本无关的MIME字符集标签的适用性相矛盾 。但是兼容性问题仅会出现在包含采用Unicode
1.1(或等同的ISO/IEC10646修正5以前)编码的韩文Hangul字符数据中 。可以证实没有这
样的数据值得担心 , 因此 , 这是不协调改变可以被接收的主要原因 。
实际上 , 假定标签理解为对修正5以后的所有版本进行引用 , 并且假定实际不会出现不
协调的改变 , 则独立于版本的标签是有理由的 。由此 , 除非ISO/IEC10646以后版本出现不
兼容改变 , 这里的MIME字符集定义将同以前的版本保持一致 , 除非IETF明确规定为不同 。
也计划注册字符集参数值为"UNICODE-1-1-UTF-8" , 唯一用途是用于可标签的文本数

推荐阅读