首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不打印5个字母长的unicode

不打印5个字母长的unicode
EN

Stack Overflow用户
提问于 2016-05-09 18:33:40
回答 2查看 71关注 0票数 0
代码语言:javascript
复制
strcpy(t, u8"\u1D004");
print("%s", t)

这是打印A4,以1D00作为A的符号。我希望它像https://en.wikipedia.org/wiki/Byzantine_Musical_Symbols中的一样打印。

谢谢,

EN

回答 2

Stack Overflow用户

发布于 2016-05-09 18:37:30

阅读the documentation

代码语言:javascript
复制
\unnnn       universal character name
             (arbitrary Unicode value);          code point U+nnnn
             may result in several characters
------------------------------------------------------------------------
\Unnnnnnnn   universal character name
             (arbitrary Unicode value);          code point U+n
             may result in several characters

所以:

代码语言:javascript
复制
strcpy(t, u8"\U0001D004");
//           ^^^^^
票数 4
EN

Stack Overflow用户

发布于 2016-05-09 18:56:03

u8"\u1D004“

\unnnn仅适用于的四位十六进制数字1D004是五位数字,因此它被解释为'\u1D00' (拉丁字母小型大写A)后跟'4'。程序(一如既往)完全按照你告诉它的去做,而不是你认为你告诉它去做的事情。;-)

\unnnn只能用于指定Basic Multilingual Plane中的字符,但有以下几个值得注意的例外:

基本源字符集中的

  • 代理项对(0xd800 - 0xdfff)
  • C0和C1控制字符(0x00-0x1f,ASCII)(可打印的ASCII-7,$@和反号除外)

对于BMP之外的字符(就像您使用拜占庭音乐符号OXEIA DIPLI一样),请使用\Unnnnnnnn (上面的例外也适用于此)。

国际标准化组织14881-2014年(编程语言标准C++,2.3字符集,第2款)的相关部分:

通用字符名称结构提供了一种命名其他字符的方法。

hex-quad:十六进制数字通用字符名称:\u quad \U quad

由通用字符名称\UNNNNNNNN指定的字符是其在ISO/IEC 10646中的字符短名为NNNNNNNN的字符;由通用字符名称\uNNNN指定的字符是其在ISO/IEC 10646中的字符短名为0000NNNN的字符。如果通用字符名称的十六进制值对应于代理代码点(在0xD800-0xDFFF范围内,包括0xD800和0xDFFF),则程序的格式不正确。此外,如果字符或字符串文字的c-char-序列、s-char-序列或r-char-序列之外的通用字符名称的十六进制值对应于控制字符(在0x00-0x1F或0x7F-0x9F范围内,包括0x00-0x1F或0x7F-0x9F)或基本源字符集中的字符,则程序的格式不正确。

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

https://stackoverflow.com/questions/37113545

复制
相关文章

相似问题

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