如何在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