如何在C++中设置编码最好?在C++中设置编码的最正确方法是什么?
我习惯使用Unicode(和wchar_t
,wstring
,wcin
,wcout
和L“...”)。我也用UTF-8保存源文件。
目前我使用MinGW(Windows 7)并在Windows控制台(cmd.exe)中运行我的程序,但有时我可以在GNU \ Linux上使用gcc,并在使用UTF-8编码的Linux控制台中运行promgram。
在任何时候我都想在Windows和Linux上编译我的源代码,并且我希望所有Unicode符号都能正确输入和输出。
当我遇到下一个编码问题时,我用Google搜索了一下。此外,我发现的最不同的委员会:setlocale(LC_ALL, "")
和setlocale(LC_ALL, "xx_XX.UTF-8")
,std::setlocale(LC_ALL, "")
和std::setlocale(LC_ALL, "xx_XX.UTF-8")
从<clocale>
,
SetConsoleCP()
和SetConsoleOutputCP()
从<windows.h>
和许多其他人。
最后我被这个萨满教所困扰,我想问你:如何正确地建立编码?
你想改变什么?你想改变线程语言环境吗?系统区域设置? UI语言?还是活动的代码页?对于线程,控制台或系统?有很多选项,远远超过单个'setlocale'函数所暗示的选项。你必须解释你想看到的*效果,然后才能告诉你什么开关可以翻转。 – 2013-04-05 05:26:16
@CodyGray,我需要任何Unicode符号/字符串正确输入和outputed。这个_effect_的充分描述?我想,这意味着我需要更改程序启动的控制台的编码。 – 2013-04-05 15:09:54
通常,我会说一个程序不应该修改语言环境 - 它应该在提供的语言环境中工作。否则,这种做法有悖于“国际化”的目的。 – 2013-04-06 00:51:45