首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ISO/IE 10646中,什么是“字符短名”?

在ISO/IE 10646中,什么是“字符短名”?
EN

Stack Overflow用户
提问于 2012-09-24 22:26:31
回答 2查看 267关注 0票数 4

C++11 2.3/2说:

由通用字符名称\ NNNNNNNN指定的字符是该字符在ISO/IEC 10646中的短名为NNNNNNNN的字符。

所以我下载了ISO/IEC 10646,但是找不到“字符短名”的定义。有人能澄清一下这是指什么吗?

我最初的目标是找出为什么在使用\U指定代码点时需要8位十六进制数字,因为六位数字总是足够的。因此,我还想知道为什么C++11指定我们使用\UNNNNNN而不是\UNNNNNN。

EN

回答 2

Stack Overflow用户

发布于 2012-09-24 22:45:01

Unicode字符代码图中,每个字符都有全名和短名。例如,字符/具有全名SOLIDUS和短名称002F。并非巧合的是,所有的字符短名都可以用十六进制表示。

至于为什么必须指定8位数字,我怀疑这是为了与可能使用更大/更多字符块的Unicode标准的未来版本向前兼容。

票数 6
EN

Stack Overflow用户

发布于 2012-09-24 22:42:45

我冒昧地猜测,我们上次被Unicode的家伙咬了一口: C++最初制造了wchar_t,这样它就可以容纳每个可能的Unicode字符。为此,它必须至少容纳16位,因为Unicode最多只能使用16位。在一个流行的实现决定实际使用16位wchar_t类型后不久,人们发现16位实际上是不够的。上一次我看Unicode时用了20位,但为什么又赌过短了呢?不太可能广泛使用24位类型,如果您需要使用特定的代码点,它最类似于只使用16位,即您可以使用\uNNNN

2.3 lex.charset第2段中的描述似乎表明,通用字符名称是指代码点.同时,通用字符名用于指字符短名.我不是Unicode的专家,但我认为代码点是指。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12573805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档