我对unicode和unicode字符串有些陌生。我正在尝试确定“全宽”符号和普通符号之间的区别。
以这两个为例:
正常:http://www.fileformat.info/info/unicode/char/20a9/index.htm
全宽:http://www.fileformat.info/info/unicode/char/ffe6/index.htm
我注意到全宽被定义为U+20A9,巧合的是20A9是正常的。那么U的值是什么呢?
当使用像ICU这样的库时,有没有一种方法可以指定always return normal与full?
谢谢,
发布于 2010-02-03 06:13:21
U+number是Unicode代码点的符号约定。没有U的“价值”。
例如,U+0020就是一个空格。内存中的值是32位十进制,20位十六进制。
全角字符则是另一回事。
回到3270年代,汉字在显示器的内存中占据了两个位置。所以他们也在屏幕上占据了两列。为了整齐地排列,IBM定义了一组“全宽”(最好是“双宽”)字母和数字。
如果某个ICU API正在提供全宽度,您可以使用规范化程序来摆脱它。你也可以在他们的售票系统上贴一张票,这看起来很奇怪。
发布于 2010-02-03 06:11:15
"U+2049“中的”U“只是表示"2049”是Unicode代码点,即Unicode codespace中的Won字符的值。这是Unicode标准中使用的符号。"U+“后面应跟一个十六进制数字,至少使用4位数字,例如"U+1234”或"U+10FFFD“。
发布于 2010-02-03 06:17:01
)是₩WON SIGN₩
这是旧字符编码的遗留问题。“宽度”影响布局。Unicode spec说:
兼容性变体是兼容性字符的子集,并且具有进一步的特征,即它们表示现有的普通Unicode字符的变体。例如,兼容性变体可以表示基本字母的各种表示形式或样式形式:上标或下标形式、不同的字形形状或垂直表示形式。它们还包括来自东亚字符编码标准的半角或全角字符、来自现有阿拉伯代码页的阿拉伯上下文形式的字形、来自其它脚本的阿拉伯连字和连字,等等。兼容性变体还包括CJK兼容性表意文字,其中许多是编码的统一CJK表意文字的次要字形变体。
在Unicode中包含这些格式允许在不丢失含义的情况下将文本从较旧的编码转换为(或转换为)较旧的编码。
参考文献:
https://stackoverflow.com/questions/2187927
复制相似问题