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.


  • Mod

    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-locale

    Na toll 😞

    Gut dann werd ich wohl um MultiByteToWideChar/WideCharToMultiByte nicht drum rumkommen...


Log in to reply