gpt4 book ai didi

c++ - 内部和外部编码与 Unicode

转载 作者:可可西里 更新时间:2023-11-01 09:26:03 26 4
gpt4 key购买 nike

由于这个问题的评论中有几位发帖人散布了很多错误信息:C++ ABI issues list

我创建这个是为了澄清。

  1. 用于 C 风格字符串的编码是什么?
  2. Linux 是否使用 UTF-8 编码字符串?
  3. 外部编码与窄字符串和宽字符串使用的编码有何关系?

最佳答案

  1. 实现已定义。甚至应用程序定义;标准并没有真正对应用程序的用途施加任何限制他们,并期望很多行为取决于语言环境。全部真正实现定义的是字符串中使用的编码文字。

  2. 在什么意义上。大多数操作系统会忽略大部分编码;你会如果 '\0' 不是空字节就会有问题,但即使是 EBCDIC 也能满足要求。否则,根据上下文,会有一些可能重要的附加字符(路径名中的 '/',例如);所有这些都使用 Unicode 中的前 128 位编码,所以将具有 UTF-8 中的单字节编码。例如,我用过UTF-8 和 ISO 8859-1 用于 Linux 下的文件名。唯一真实的问题是显示它们:例如,如果您在 xterm 中执行 lslsxterm 将假设文件名在同一个目录中编码作为显示字体。

  3. 这主要取决于语言环境。根据语言环境,它是很可能窄字符串的内部编码不对应于用于字符串文字的那个。 (但怎么可能否则,因为字符串文字的编码必须在编译时,其中作为窄字符的内部编码字符串取决于用于读取它的语言环境,并且可以从一个字符串到下一个。)

如果你在 Linux 中开发一个新的应用程序,我强烈推荐建议对所有内容使用 Unicode,对宽字符使用 UTF-32字符串,UTF-8 用于窄字符串。但不要指望在字符串中工作的前 128 个编码点之外的任何内容文字。

关于c++ - 内部和外部编码与 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7500902/

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