分类: C/C++
2009-09-03 10:59:05
例如,希伯来语字母 aleph(א)的Unicode代码是 U+05D0,按照以下方法改成 UTF-8:
UTF-8的设计有以下的多字符组序列的特质:
110
的是2字节序列,而1110
的是三字节序列,如此类推。10
。UTF-8的这些特质,保证了一个字符的字节序列不会包含在另一个字符的字节序列中。这确保了以字节为基础的部份字串比对(sub-string match)方法可以适用于在文字中搜寻字或词。有些比较旧的可变长度8位元编码(如)没有这个特质,故字串比对的算法变得相当复杂。虽然这增加了UTF-8编码的字串的,但是利多于弊。另外,并非Unicode 的目的,所以不可混为一谈。即使在传送过程中有部份字节因错误或干扰而完全遗失,还是有可能在下一个字符的起点重新同步,令受损范围受到限制。
另一方面,由于其字节序列设计,如果一个疑似为字符串的序列被验证为UTF-8编码,那么我们可以有把握地说它是UTF-8字符串。一段两字节随机 序列碰巧为合法的UTF-8而非ASCII 的机率为32分1。对于三字节序列的机率为256分3,对更长的序列的机率就更低了。