bad locale name
-
Hallo zusammen,
ich würde gerne die globale locale von meinem Programm ändern. Dafür verwende ich folgenden Code:
#include <iostream> #include <string> #include <locale> int _tmain(int argc, _TCHAR* argv[]) { std::locale loc(""); std::cout << loc.name() << '\n'; // Outputs: German_Germany.1252 std::locale loc2("German_Germany.UTF-8"); // bad locale exception std::locale::global(loc2); }
Auch de-DE.UTF-8 oder de_DE.UTF-8 funktioniert nicht, obwohl ich das als Beispiel auf diversen Internet Seiten gefunden habe... Letztendlich will ich einfach die Codepage der aktuellen locale auf UTF-8 umstellen (also in meinem Fall von German_Germany.1252 zu German_Germany.UFT-8).
Was läuft hier schief?
-
Welches betriebsystem?
-
...
-
Jo, Windows 7 Professional. Entwicklungsumgebung ist Visual Studio 2013.
-
Die Ausgabe der locale klingt nach Windows. de_de.utf8 & Co. sind typische Linuxlocales. "German_Germany.UTF-8" habe ich nie gehört und auch Google nicht. Es gibt aber eine locale für Oracleprodukte namens "German_Germany.UTF8". Laut MSDN sollte die Bezeichnung "German_Germany.65001" sein.
Wann immer man aber über UTF-8 in Windows spricht, hört man selten Gutes.
-
...
-
SeppJ schrieb:
Wann immer man aber über UTF-8 in Windows spricht, hört man selten Gutes.
Echt, warum? Was hört man den an nicht guten Sachen?
Swordfish schrieb:
Laut MSDN sollte die Bezeichnung "German_Germany.65001" sein.
Also ich kann in dem Link die Bezeichung "German_Germany.65001" nirgends finden? Auf jeden Fall crasht das Programm auch mit dieser Bezeichung (immer noch runtimer error: bad locale name).
-
happystudent schrieb:
SeppJ schrieb:
Wann immer man aber über UTF-8 in Windows spricht, hört man selten Gutes.
Echt, warum? Was hört man den an nicht guten Sachen?
Swordfish schrieb:
Laut MSDN sollte die Bezeichnung "German_Germany.65001" sein.
Also ich kann in dem Link die Bezeichung "German_Germany.65001" nirgends finden? Auf jeden Fall crasht das Programm auch mit dieser Bezeichung (immer noch runtimer error: bad locale name).
letzte zeile in der tabelle:
65001 utf-8 Unicode (UTF-8)ABer utf8 und windows im zusammenspiel mit c++ stl io klappt nicht.
siehe http://stackoverflow.com/questions/4324542/what-is-the-windows-equivalent-for-en-us-utf-8-locale
-
firefly schrieb:
ABer utf8 und windows im zusammenspiel mit c++ stl io klappt nicht.
siehe http://stackoverflow.com/questions/4324542/what-is-the-windows-equivalent-for-en-us-utf-8-localeNa toll
Gut dann werd ich wohl um MultiByteToWideChar/WideCharToMultiByte nicht drum rumkommen...