pri*_*bel 33 terminology utf-8 multibyte
多字节这个术语是指一个字符集,它的字符可以 - 但不一定是 - 宽于1个字节(例如UTF-8),或者它是指在任何情况下宽于1个字节的字符集(例如UTF) -16)?换句话说:如果有人谈论多字节字符集是什么意思?
Jas*_*rue 31
这个术语含糊不清,但在我的国际化工作中,我们通常避免使用术语"多字节字符集"来引用基于Unicode的编码.通常,我们仅将该术语用于具有一个或多个字节的传统编码方案来定义每个字符(不包括每个字符仅需要一个字节的编码).
通常包括Shift-jis,jis,euc-jp,euc-kr以及中文编码.
除了一些例外,大多数遗留编码需要一种状态机模型(或者更简单地说,页面交换模型)来处理,并且在文本流中向后移动是复杂且容易出错的.UTF-8和UTF-16不会遇到这个问题,因为可以使用位掩码测试UTF-8,并且可以针对一系列代理对测试UTF-16,因此在非病理文档中前后移动可以安全无需重大复杂.
对于像泰语和越南语这样的语言,一些遗留编码具有多字节字符集的一些复杂性,但实际上只是基于组合字符,并且通常不会与广义术语"多字节"混为一谈.
bob*_*nce 16
如果有人谈论多字节字符集是什么意思?
像往常一样,这取决于谁在说话!
从逻辑上讲,它应该包括UTF-8,Shift-JIS,GB等:可变长度编码.UTF-16通常不会被考虑在这个组中(即使它与代理人有什么关系;当然,当通过UTF-16LE/UTF-16BE编码成字节时,它是多个字节).
但是在Microsoftland中,这个术语更常用于表示可变长度的默认系统代码页(对于传统的非Unicode应用程序,其中仍然有很多).在此用法中,不能包含UTF-8和UTF-16LE/UTF-16BE,因为Windows上的系统代码页无法设置为这些编码中的任何一种.
实际上,在某些情况下,"mbcs"只不过是系统代码页的同义词,否则就知道(甚至更具误导性)为"ANSI".在这种情况下,"多字节"字符集实际上可能像cp1252西欧一样微不足道,每个字符只使用一个字节!
我的建议:当你的意思是使用"变长"时,避免使用含糊不清的术语"多字节"; 当其他人使用它时你需要要求澄清,但通常有Windows背景的人会谈论遗留的东亚代码页,如cp932(Shift-JIS)而不是UTF.
多字节字符意味着编码需要超过 1 个字节的字符。然而,这并不意味着使用该特定编码的所有字符都将具有相同的宽度(以字节为单位)。例如:UTF-8 和 UTF-16 编码的字符有时可能使用多个字节,而所有UTF-32 编码的字符总是使用 32 位。
参考:
| 归档时间: |
|
| 查看次数: |
72605 次 |
| 最近记录: |