gcc auf unicode einstellen



  • Hi,

    ich bin vor kurzem von VC++ auf gcc umgestiegen und habe nun ein paar fragen.
    Wie kann ich einstellen, dass er bei strings usw nur noch mit dem unicode arbeitet. Muss ich noch irgendwas von Hand ändern, oder reicht es wenn man einen bestimmten Wert definiert. Ala #define UNICODE.

    Danke schonmal



  • Mein GCC gibt mir wunderbar alles, was ich zu std::cout 'rausschreibe als UTF-8 aus 😃

    Kommt schlichtweg darauf an a) welche Unicode - Codierung dein Ausgabegerät gerne hätte und in welcher Form die Strings eingegeben sind.



  • Beim MSVC und Unicode geht es doch um die Runtime, und die nutzt unter Windows nunmal wchar_t für Internationalisierung.

    Die Frage ist nun, wo es denn bei dir hakt? Gibts überhaupt ein Problem? Wie hast du bisher deinen Code geschrieben? Mit Makros? Oder hart codiert gleich wchar_t und wstring benutzt? Fragen über Fragen... aber auch nur, weil du null Infos gegeben hast.



  • Ein Problem gibt es eigentlich nicht direkt. Ich weiß nur einfach nicht ob mein Compiler momentan mir "normalen" 8 Bit chars arbeitet oder mit wchar.
    Das gleiche gilt für string. Das muss man ja irgenwo einstellen können.



  • Nö, muß man nicht! Habe ja schon gesagt, die Unicode-Sache im MSVC hatte nichts mit dem Compiler zu tun. Sondern mit der Runtime und den Makros.



  • man muss nur alle strings in utf-8 verfassen und ein utf-8 kompatibles terminal verwenden. unter linux hat man da z.b. urxvt. ka, ob es da unter windows auch was passendes gibt.



  • newGccler schrieb:

    Ein Problem gibt es eigentlich nicht direkt. Ich weiß nur einfach nicht ob mein Compiler momentan mir "normalen" 8 Bit chars arbeitet oder mit wchar.
    Das gleiche gilt für string. Das muss man ja irgenwo einstellen können.

    Wenn du mit char abeitest, dann ist das ein normales Ein-Byte-Zeichen. Dasselbe mit string. Wenn du wchar_t und wstring benutzt, dann sind es Unicode-Zeichen. Das ist immer so, da muss nichts eingestellt werden, denn die Definitionen stehen fest.
    Anders ist es, wenn du TCHAR aus der Windows.h benutzt. Denn da ist es abhängig von der Einstellung, ob TCHAR ein char oder ein wchar_t ist. Ich weiß nicht, ob das mit den Compileroptionen eingestellt werden kann, aber im Quellcode kannst du auf jeden Fall

    #define UNICODE
    

    schreiben, dann ist es wchar_t. Ansonsten char.

    Artchi schrieb:

    Nö, muß man nicht! Habe ja schon gesagt, die Unicode-Sache im MSVC hatte nichts mit dem Compiler zu tun. Sondern mit der Runtime und den Makros.

    Würde ich nicht sagen. Zumindest in der 2005er Version wird für TCHAR standardmäßig ein Unicodezeichen verwendet, auch wenn man das UNICODE-Makro nicht definiert hat. Das konnte man dann, wenn ich nicht irre, in den Compileroptionen umstellen.



  • Vergiss TCHAR, wchar_t & Co. und benutze einfach normale char* mit UTF-8. UTF-8 kann man wunderbar in einem normalen char* speichern. Da braucht man nix einstellen oder irgendwelche Windows-spezifischen Sachen machen. Oder noch besser: benutze ustring.


Anmelden zum Antworten