Konvertieren Sie UTF-16 in UTF-8 unter Windows und Linux, in C
Lesezeit: 2 Minuten
DooriBar
Ich habe mich gefragt, ob es eine empfohlene „Cross“-Windows- und Linux-Methode zum Konvertieren von Zeichenfolgen von UTF-16LE in UTF-8 gibt. oder sollte man für jede umgebung unterschiedliche methoden verwenden?
Ich habe es geschafft, einige Verweise auf ‘iconv’ zu googeln, aber aus irgendeinem Grund kann ich keine Beispiele für grundlegende Konvertierungen finden, z. B. – Konvertieren eines wchar_t UTF-16 in UTF-8.
Jeder kann eine Methode empfehlen, die “cross” wäre, und wenn Sie Referenzen oder einen Leitfaden mit Beispielen kennen, wäre ich sehr dankbar dafür.
Danke, Doori-Bar
Siehe diese vorherige Frage: stackoverflow.com/questions/148403/…
– Markieren Sie Lösegeld
20. Mai 2010 um 2:13 Uhr
Danke Mark, aber ich fürchte, es ist zu niedrig für mich.
Das boost::locale::conv::utf_to_utf Funktion versuchen, aus einem Puffer, der von UTF-16LE codiert ist, in UTF-8 zu konvertieren, The boost::locale::conv::from_utf Funktion versuchen, von einem Puffer, der von UTF-8 in ANSI codiert wurde, zu konvertieren, stellen Sie sicher, dass die Codierung richtig ist (hier verwende ich die Codierung für Latin-1, ISO-8859-1).
Eine weitere Erinnerung ist, dass std::wstring unter Linux 4 Bytes lang ist, aber unter Windows std::wstring 2 Bytes lang ist, also sollten Sie std::wstring besser nicht verwenden, um den UTF-16LE-Puffer zu enthalten.
MM
Wenn Sie MSYS2 installiert haben, dann die iconv -Paket (das standardmäßig installiert wird) können Sie Folgendes verwenden:
iconv -f utf-16le -t utf-8 <input.txt >output.txt
Kevin Smith
Es gibt auch utfcppbei der es sich um eine Nur-Header-Bibliothek handelt.
13796600cookie-checkKonvertieren Sie UTF-16 in UTF-8 unter Windows und Linux, in Cyes
Siehe diese vorherige Frage: stackoverflow.com/questions/148403/…
– Markieren Sie Lösegeld
20. Mai 2010 um 2:13 Uhr
Danke Mark, aber ich fürchte, es ist zu niedrig für mich.
– DooriBar
20. Mai 2010 um 12:33 Uhr