Terminal > Profiles > Advanced > Text encoding
wird als Unicode (UTF-8)
festgelegt.Unicode in C++, das nicht im Mac-Terminal angezeigt wird
Terminal > Profiles > Advanced > Set locale environment variables on startup
ist überprüft.
Terminal > Profiles > Advanced > Unicode East Asian Ambiguous characters are wide
ist überprüft (Ich habe es auch unkontrolliert versucht - beide geben die gleichen Ergebnisse).
Die im Terminalprofil ausgewählte Schriftart ist mit chinesischen Zeichen kompatibel - ich habe es überprüft.
Ich habe locale
durch das Terminal selbst, und es gibt die folgenden:
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
- ich bin nicht sicher, ob dies das Problem ist, wie es en_US
sagt aber sagt auch UTF8
, was das ist Kodierung der Charaktere, die ich betrete.
all dies zu testen, habe ich den folgenden Code verwendet haben:
char dao [4] = "\u9053";
std::wcout << "Character: " << dao << std::endl;
wchar_t wdao[] = L"道";
std::wcout << "Character 2: " << wdao << std::endl;
Zuerst kamen die Zeichen als Fragezeichen, aber jetzt zeigen sie nicht überhaupt auf. Wenn ich alle diese Zeilen in ein Programm setze, wird nur Character:
angezeigt - es wird nie in die zweite Zeile geschrieben, es wird kein chinesisches Zeichen angezeigt, und es wird kein Fehler ausgegeben.
Ich habe versucht setlocale();
, aber es hilft nicht.
Ich habe auch sichergestellt, dass die Quelldatei für den C++ - Code als Unicode UTF-8
festgelegt ist.
Irgendwelche Ideen? Gibt es etwas, das mir hier fehlt?
UPDATE: Ich kann die Charaktere bekommen in dem Terminal durch diese Methode anzuzeigen:
char dao [4] = "道";
std::cout << "Character: " << dao << std::endl;
char dao2 [4] = "\u9053";
std::cout << "Character: " << dao2 << std::endl;
Das heißt, konnte ich nie bekommen es mit wchar_t
statt char[]
zu arbeiten. Ich nehme an, das ist gut genug, da es jedoch funktioniert, wenn jemand weiß, was das Problem mit der Verwendung von wchar_t
war, würde ich es zu schätzen wissen, dass für zukünftige Referenz.
danken, aber ich versuchte breite Zeichen mit 'wcout' und es hat auch nicht funktioniert. Aus irgendeinem Grund konnte ich nicht erreichen, dass ein chinesisches Schriftzeichen in einem großen Schriftzeichen enthalten war und dann durch "wcout" gedruckt wurde - das war meine ursprüngliche Absicht, weil ich mit den Schriftzeichen als einzelne Dinge umgehen wollte Zeichenfelder. Wenn Sie irgendwelche Ideen haben, warum das so sein könnte, lassen Sie es mich bitte wissen. Die Arbeit mit chinesischen Schriftzeichen war ein bisschen komplex und es ist schwer zu sagen, was genau falsch läuft. –