gpt4 book ai didi

c++ - C 标准 : Character set and string encoding specification

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:45 25 4
gpt4 key购买 nike

我发现 C 标准(C99 和 C11)在字符/字符串代码位置和编码规则方面含糊不清:

首先,标准定义了源字符集执行字符集。本质上它提供了一组字形,但不关联任何数值与他们 - 那么默认字符集是什么?

我在这里不是在问编码,而是在字形/轨道到数字/代码点映射。它确实将 universal character names 定义为 ISO/IEC 10646,但它是否表示这是默认字符集?

作为上述内容的扩展 - 我找不到任何说明什么字符的内容数字转义序列\0 和\x 代表。

根据 C 标准(C99 和 C11,我没有检查 ANSI C)我得到了以下内容关于字符和字符串文字:

 +---------+-----+------------+----------------------------------------------+
| Literal | Std | Type | Meaning |
+---------+-----+------------+----------------------------------------------+
| '...' | C99 | int | An integer character constant is a sequence |
| | | | of one or more multibyte characters |
| L'...' | C99 | wchar_t | A wide character constant is a sequence of |
| | | | one or more multibyte characters |
| u'...' | C11 | char16_t | A wide character constant is a sequence of |
| | | | one or more multibyte characters |
| U'...' | C11 | char32_t | A wide character constant is a sequence of |
| | | | one or more multibyte characters |
| "..." | C99 | char[] | A character string literal is a sequence of |
| | | | zero or more multibyte characters |
| L"..." | C99 | wchar_t[] | A wide string literal is a sequence of zero |
| | | | or more multibyte characters |
| u"..." | C11 | char16_t[] | A wide string literal is a sequence of zero |
| | | | or more multibyte characters |
| U"..." | C11 | char32_t[] | A wide string literal is a sequence of zero |
| | | | or more multibyte characters |
| u8"..." | C11 | char[] | A UTF-8 string literal is a sequence of zero |
| | | | or more multibyte characters |
+---------+-----+------------+----------------------------------------------+

但是我找不到关于这些文字的编码规则的任何信息。UTF-8 似乎确实暗示了 UTF-8 编码,但我认为没有明确提及任何地方。另外,对于其他类型,编码是未定义的还是依赖于实现?

我不太熟悉 UNIX 规范。 UNIX 规范是否对这些规则指定了任何附加约束?

此外,如果有人能告诉我GCC 和 MSVC 使用什么字符集/编码方案,那也会有所帮助。

最佳答案

C 对字符集不贪心。没有“默认字符集”这样的东西,它是实现定义的——尽管在大多数现代系统上它主要是 ASCII 或 UTF-8。

关于c++ - C 标准 : Character set and string encoding specification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com