4

我在我的公司做一个关于 Unicode 和编码的技术演讲,我试图说明字符串总是被编码的,开发人员永远不应该粗心地假设一切都是 0-127 ASCII。

我有很多由错误编码文本引起的问题示例,但我没有找到任何简单英文文本的示例,其中的数字编码高于 Unicode代码点127。

基本英文字母在 Unicode 中映射到与普通旧 ASCII 相同的数值:范围A-Z映射到[65-90](或[0x41-0x5a]十六进制),并[a-z]映射到[97-122](hex [0x61-0x7a])。

英文字母是否出现在代码表的其他地方?我不是指回旋字母或其他拉丁变体,只是简单的英文字母。

4

3 回答 3

5

CJK 字符通常在所有字体中都是等宽的,因为这就是这些语言的编写方式。

但是,当混合 CJK 和英文字符时,您会遇到一个问题:ASCII 字符通常没有 CJK 字符的宽度。这意味着如果您使用 ASCII,您将失去等宽属性 - 这可能并不总是可取的。

为此,可以使用全宽字符(U+FF00-FFEE、维基百科Unicode 代码表)来代替“常规”字符。它们具有与单个 CJK 字符具有相同宽度的特性。

但是请注意,全角字符实际上从未在 CJK 上下文之外使用,即使在那些上下文中,也经常使用纯 ASCII,当等宽被认为不重要时。

于 2012-08-06T11:31:26.477 回答
3

许多标点和符号的代码点值高于 U+007F:

  • “你好。”</li>
  • 他得到了一个完整的 64 支蜡笔 Crayola 盒子——包括金蜡笔和银蜡笔——并且不让我看。
  • x≠y

上面的例子使用:

  • U+201C 和 U+201D — 智能报价
  • U+2014 — 破折号
  • U+2260 — 不等于

有关更多信息,请参阅Unicode 图表

于 2012-08-06T08:25:42.867 回答
2

好吧,如果你的意思是a-z然后A-Z没有,那么没有超过 127 的英文字符。但是像 等这样的词fiancé有时resumé在英语中的拼写是这样的,并且使用高于 127 的代码点。

然后是127以上的各种标点符号、货币符号等。不确定这算不算简单的英文文本。

于 2012-08-06T08:13:37.617 回答