MinGW Unicode?
-
Jochen Kalmbach schrieb:
groovemaster schrieb:
Meines Wissens unterstützt MinGW keine Wide String Implementation.
Wenn das wirklich so wäre, dann ist das ja ein k.o. Kriterium...
Als GCC Derivat sollte es Unicode über wchar_t definitiv unterstützen, die Frage ist eher, ob es aktuellen Unicode (utf-32) unterstützt oder das veraltete Windows Zeugs (UCS-2), wie der MVC++ :p
quatsch schrieb:
Nur die wenigsten Leute brauchen Unicode Unterstützung.
hmm, alle Englisch-Sprachler kommen perfekt mit ASCII aus. Okay die meisten europäischen Sprachen kann man ja noch über die ISO 8859-x Sachen emulieren. Aber die Welt besteht nicht nur aus Europa, USA und Australien
-
Hallo,
Aber die Welt besteht nicht nur aus Europa, USA und Australien
Kommt mit aber manchmal anders vor.
Habe einmal gehört der MinGW unterstützt kein Unicode. Soll aber einen Patch dafür geben. Oder ich bin einfach nur gerade Müde
.
MFG winexec*
-
Ich dachte hier geht es darum das der Threadstarter seine C++ Quellcode-Dateien in Unicode Codierung abgespeichert hat.
-
ja... also MinGW unterstützt natürlich L"string" und wchar_t - jedoch konnte ich keinen Code kompilieren,der in Unicode gespeichert war... ich dachte es gibt dafür einen Schalter oder sowas... Sinn würde das nur bei Kommentaren und bei Strings machen...
-
Das Problem dürfte eher sein, dass du UTF-16 benutzt hast. Der GCC und daher auch der MinGW erwartet 8Bit breite Zeichen. Daher solltest du hier UTF-8 benutzen.
-
nö mit UTF-8 gehts auch nicht
-
Aber sowas von.
Wie sieht der Code aus, was ist die Fehlermeldung und wie lautet die Ausgabe von g++ --version ?
-
da steht dann, das die ersten zeichen der datei ungültig sind (unicode dateien sind am anfang mit 2 zeichen codiert deren werte über 128 liegen)
-
So, habe es auch mal mit UTF-8 und UCS-2 getestet (MinGW 3.4.5). Beides wird nicht akzeptiert. Ich gehe deshalb davon aus, wie ich bereits oben schrieb, dass sich MinGW strikt an den Standard hält und nur den dort definierten Zeichensatz akzeptiert.
-
In Kommentaren und Stringliteralen schluckt der GCC aber definitiv UTF-8
#include <stdio.h> #include <string.h> int main() { char const *utf8str="üäö"; printf("%zu %s %x %x\n", strlen(utf8str), utf8str, utf8str[0], utf8str[1]); }
Gibt bei mir
6 üäö ffffffc3 ffffffbc
aus
Naja, bei Bezeichnern ist es vom C++-Standard her wohl nicht erlaubt
-
Naja, das hat ja nix mit Bezeichnern ansich zu tun.
Ich denke, das wird wohl eher als erweiteres ASCII interpretiert und dann uU gewrappt, um dem Wertebereich von char zu entsprechen. Die stdlib Implementation von printf wird wahrscheinlich genauso arbeiten.
-
wie gewrapt? Nö, der wird schon einfach das übernehmen, was in der Code-Datei steht. Bei Bezeichnern checkt der vermutlich einfach ob diese dem im Standard vorgegebenen Zeichensatz entsprechen.
So sieht das zumindest von der Fehlermeldung aus.
-
kingruedi schrieb:
wie gewrapt?
Dass er zB in -128..127 passt. Genau wie bei
char a = 1000;
-
wie kann ich zumindest einzelne zeichen mit Esc-Sequenz im Unicode-Format angeben?
in der Art von:
char* str="\u12345";