【发布时间】:2022-01-02 13:34:57
【问题描述】:
我对 unicode 进行了大量阅读,得出的结论是 Unicode 是一个字符集,而 utf8 是可能的编码之一,恰好是多字节编码。 然而,当我被告知我的 Windows 机器可能具有与 utf8 不同的语言环境设置时,进一步的阅读让我有点困惑。
- 如果我的应用程序处理 utf8,那么我需要先从多字节用户输入转换为宽字符,然后再转换为 utf8。我的第一个问题是为什么我需要这样做,因为 utf8 本身就是多字节编码。那么,为什么我需要进行此往返行程?
- 我的第二个问题是如何在 Windows 和 Linux 中获取当前语言环境?为什么这种语言环境的讨论甚至存在?我的意思是为什么我们在编写一个支持 unicode 的 c++ 应用程序时甚至需要考虑语言环境设置?
- 我的第三个问题是,应用程序内部处理的utf8与保存应用程序源文件的编码有何不同?应用程序正在处理的编码(在我的例子中为 utf8)与保存应用程序源代码的编码之间是否存在任何关系?
- 我的第四个问题是,当我们说应用程序支持 Unicode 时,它的实际含义是什么?这是否意味着它应该处理所有可能的 Unicode 编码或特定的编码?给定一个应用程序,我如何才能知道它支持哪种 unicode 编码?
【问题讨论】: