c - 为什么 "no-break space"和其他 ispunct() 在 GLibC 中?

标签 c unicode glibc

我一直在查看<wctype.h> GNU LibC 赋予各种分隔符的标志。基本上有两组。

第一组在 iswspace() 上返回 true和iswblank() (和 isprint() ,但这对于其他组也是如此)。其中包括:

到目前为止没有任何投诉。不过,其他组让我感到困惑:

这些在 iswspace() 上返回 falseiswblank() ,但 iswpunct()trueiswgraph() .

为什么最后三个被认为是标点符号,而不是空格?

显然,Java 在这一点上与 GLibC 一致(参见链接页面)。 Unicode将两个组标记为类别“Zs”、“Space_Separator”...

最佳答案

ISO/IEC 30112 信息技术 - 文化习俗的规范方法指出,我的重点是:

space

Define characters to be classified as white-space characters, to find syntactical boundaries. [...] The class should not include the NO-BREAK spaces characters <U00A0>, <U2007>, <UFEFF>, as these characters should not be used for word boundaries.

关于c - 为什么 "no-break space"和其他 ispunct() 在 GLibC 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50952142/

相关文章:

copy_to_user 未返回预期数据

c - 使用 select 进行套接字编程

unicode - 在将 RTF 十六进制文字转换为 Unicode 时如何发现要使用的代码页

c - 为什么我的文件输出被覆盖?

c - wait() 调用会以可预测的顺序执行吗?

html - Unicode 表情符号的颜色

linux - 使用 iconv 将 UTF8 转换为 UTF16

glibc可以编译成一个目标文件吗

c - 使用 1 个套接字但端口不同加入多个多播组?

linux - 内核空间有libc吗?