MB_CUR_MAX
被 glibc 定义为“一个正整数表达式,它是当前语言环境中多字节字符的最大字节数”。
如果我打印我得到的值1
。我认为这是因为 CC
默认使用区域设置,即使我系统的区域设置是en_US.UTF-8
.
如果我添加setlocale(LC_ALL, "")
到我的程序中,它应该启用使用环境的区域设置,然后MB_CUR_MAX
变成6
.
现在我的问题是,为什么是 6?UTF-8 不是每个代码点有 1 到 4 个字节的编码吗?
MB_CUR_MAX
被 glibc 定义为“一个正整数表达式,它是当前语言环境中多字节字符的最大字节数”。
如果我打印我得到的值1
。我认为这是因为 CC
默认使用区域设置,即使我系统的区域设置是en_US.UTF-8
.
如果我添加setlocale(LC_ALL, "")
到我的程序中,它应该启用使用环境的区域设置,然后MB_CUR_MAX
变成6
.
现在我的问题是,为什么是 6?UTF-8 不是每个代码点有 1 到 4 个字节的编码吗?
根据维基百科,UTF-8 确实需要最多 6 个字节,直到 2003 年,RFC 3629 添加了一些限制: