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

Plu*_*tor 14 c string

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

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

Nie*_*jou 8

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

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

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

  • 我猜语言环境也可以在编译器中配置。刚刚发现 gcc 的 -finput-charset 选项(http://gcc.gnu.org/onlinedocs/cpp/Invocation.html)。默认似乎是UTF8。难怪我能够打印 UTF8Strings。 (2认同)
  • @Plumenator:关于`strcmp`的唯一保证是输出值对应于字符串中字符的数值.它没有说明结果映射到字母表. (2认同)

fre*_*oma 7

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

  • “它实际上没有任何编码” 数字存储的文本总是有一些编码。 (2认同)

Oli*_*rth 6

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

  • @Plumenator它的工作原理是因为UTF-8被设计为对已经处理ASCII的代码尽可能透明,并且因为你的输出终端支持UTF-8 (3认同)