c++ - ICU Unicode 正常与全角

标签 c++ unicode string internationalization icu

我对 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 这样的库时,有没有办法指定总是返回正常与完整?

谢谢,

最佳答案

U+number 是 Unicode 代码点的符号约定。 U 没有“值(value)”。

例如U+0020就是一个空格。内存中的值为十进制32,十六进制20。

全角字符是另一回事。

在 3270 时代,汉字在内存中占据了两个位置。所以他们也在屏幕上占据了两栏。为了让事情整齐排列,IBM 定义了一组“全角”(最好是“双角”)字母和数字。

如果某些 ICU API 正在交付全角,您可以使用 Normalizer 来摆脱它。您也可以将票张贴到他们的票务系统,这看起来很奇怪。

关于c++ - ICU Unicode 正常与全角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2187927/

相关文章:

C++ 在另一个函数中调用函数

c++ - 删除 2D vector 中的行 - 段错误

C++ 语法我不明白

python - 对 Python 的 `time.strftime()` 使用 Unicode 格式

go - 检查 rune 是否在基本多语言平面中的正确方法是什么?

java - 替换字符串中的值

python - 使用 .astype(str) 将包含地址和坐标的列转换为字符串会删除坐标

c++ - C++ 中的模板和映射

python - UnicodeEncodeError : 'latin-1' codec can't encode character '\u2013' (writing to PDF)

将十六进制值转换为 C 中字符串类型的 ip 地址。