Page 415 - HTTP权威指南
P. 415

有些字符编码(比如 UTF-8 和 iso-2022-jp)更加复杂,它们是可变长(variable-
               length)编码,也就是说每个字符的位数都是可变的。这种类型的编码允许使用额外
               的二进制位表示拥有大量字符的字母表(比如汉语和日语),仅用较少的二进制位来
               表示标准的拉丁字符。


               16.2.2 字符集和编码如何工作

               现在我们来看看字符集和编码到底做了什么。

               我们想把文档中的二进制码转换为字符以便显示在屏幕上。但由于有很多不同的字
               母表,也有很多不同的方法把字符编码成二进制码(这些方法各有优缺点),我们需
               要一种标准方法来描述并应用把二进制码转换为字符的解码算法。

               把二进制码转换为字符要经过两个步骤,如图 16-2 所示。

               •   在图 16-2a 中,文档中的二进制码被转换成字符代码,它表示了特定编码字符集
                 中某个特定编号的字符。在这个例子里,解码后的字符代码是数字编号 225。

               •   在图 16-2b 中,字符代码用于从编码的字符集中选择特定的元素。在 iso-8859-6
                 中,值 225 对应阿拉伯字母“FEH”。在步骤 a 和 b 中使用的算法取决于 MIME
                 的 charset 标记。


                                            按iso-8859-6编
                                             码的字符集

                                      65     大写拉丁字母A
                                      66     大写拉丁字母B

                                      224 阿拉伯语中的占位对齐字符
                                      225    阿拉伯字母FEH
                                      226    阿拉伯字母QAF
                                      227    阿拉伯字母KAF

                   数据二进制码            字符代码                 唯一字符                   字形
                    ...11100001        225              "阿拉伯字母FEH"
                                    (在iso-8859-6
                                     字符集中)
                         编码方案(使用iso-       编码后的字符集                  字体和显示逻辑
                        8859-6中的编码方案)
                      (a)使用编码方案解码        (b)使用编码后的             (c)使用字体和版式
                                               字符集找到字符              软件找到显示字形
                         MIME中的charset标记综合描述了字符编码方案和编码后的字符集映射关系

               图 16-2 HTTP 协议中的 charset 是字符编码方案和编码后字符集的组合


               390   |   第 16 章
   410   411   412   413   414   415   416   417   418   419   420