我已经对unicode做了大量的阅读,并得出结论,Unicode是一个字符集,而utf8是一种可能的编码方式,碰巧是多字节编码。然而,当我被告知我的windows机器可能具有与utf8不同的地区设置时,进一步的读数让我有点困惑。
,
,
发布于 2022-01-02 14:57:14
是多字节字符集编码不同于utf8?
UTF-8是一个多字节字符集,但其他多字节字符集存在.
如果我的应用程序处理utf8,那么我首先需要将多字节用户输入转换为宽字符,然后转换为utf8。我的第一个问题是,为什么我需要这样做?
你一般不需要这么做。如果您有这样的情况是必要的,那么原因取决于该情况。
如何在windows和Linux中获得当前的区域设置?
您可以使用std::setlocale
函数。如果将null作为第二个参数传递,它将返回作为第一个参数给定的类别的区域设置。
在POSIX系统上,您可以使用nl_langinfo
函数获取给定区域设置的字符编码。
--为什么这种关于地区的讨论甚至还存在?
因为不同的编码、语言和约定是存在的。
--我的意思是,为什么我们需要在编写c++应用程序时考虑一下地区设置?
首先,除了unicode之外还有其他编码。没有区域设置,您就无法知道当前的编码是否为unicode。
其次,地区涵盖的不仅仅是编码。最重要的是,它涵盖了系统的语言。它还涵盖了诸如使用什么符号作为小数分隔符等内容。
https://stackoverflow.com/questions/70556400
复制相似问题