C字符串的默认编码是什么?

我知道C字符串是char [],在最后一个元素中带有’\ 0’。 但是这些字符是如何编码的?

更新:我发现这个很酷的链接谈论了许多其他编程语言及其编码约定: 链接

关于此事的所有标准都说你得到至少52个大写和小写拉丁字母字符,数字0到9,符号! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~ ! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~ ,以及空格字符和控制字符,表示水平制表符,垂直制表符和换页符。

关于数字编码,唯一的说法是所有上述内容都适合一个字节,并且零后的每个数字的值比前一个数字的值大1。

实际编码可能inheritance自您的语言环境设置。 可能是ASCII兼容的东西。

c字符串几乎只是一个字节序列。 这意味着,它没有明确定义的编码,可能是ASCII,UTF8或其他任何东西。 因为大多数操作系统默认都是ASCII,而源代码大多是用ASCII编码编写的,所以你在简单(char *)中找到的数据通常也是ASCII。 尽管如此,无法保证你从(char *)得到的东西是UTF8甚至是KOI8。

该标准没有具体说明。 通常使用ASCII。

正如其他已经指出的那样,C对源和执行字符编码允许的内容有一些限制,但相对宽容。 所以特别是它不一定是ASCII,在大多数情况下,现在至少是它的扩展。

您的执行环境旨在在源和执行字符集之间进行最终转换。 所以一般来说,你不应该关心编码,相反,尝试独立编码。 这就是为什么有特殊字符的特殊转义序列,如'\n''\t'以及'\u0386'等通用字符编码。 所以通常你不必自己查找执行字符集的编码。

它们并没有真正“编码”,它们只是按原样存储。 字符串“hello”表示具有char值'h''e''l''l''o''\0'的数组。 C标准具有包含这些字符的基本字符集,但未将编码指定为字节。 如你所知,它可能是EBCDIC。