Ich versuche, ein C++ std::string
in UTF-8 oder std::wstring
zu konvertieren, ohne Informationen zu verlieren (betrachten Sie eine Zeichenfolge, die Nicht-ASCII-Zeichen enthält).Welche Codierung verwendet std :: string.c_str()?
Nach http://forums.sun.com/thread.jspa?threadID=486770&forumID=31:
Wenn die std :: string Nicht-ASCII-Zeichen hat, eine Funktion zur Verfügung stellen müssen, die UTF-8-Codierung aus dem konvertiert [...]
Welche Codierung verwendet std::string.c_str()
? Wie kann ich es plattformübergreifend in UTF-8 oder std::wstring
konvertieren?
Also im Wesentlichen gibt es keine Möglichkeit für mich, std :: string zu konvertieren, ohne seine Codierung im Voraus zu wissen? Ich frage, weil ich eine API-Funktion schreibe, die eine std :: string aufnimmt. Ich denke, die Dokumentation muss den Benutzern mitteilen, welches Format übergeben werden soll. – Gili
@Gili, rechts: Sie können eine Byte-Sequenz in einer unbekannten Kodierung nicht zuverlässig in UTF-8 konvertieren (oder irgendetwas anderes ;-). Ich empfehle Ihnen, den Anrufer aufzufordern, UTF-8-Daten zu liefern - die meisten anderen Kodierungen erlauben keine Kodierung _jeder_ mögliche Unicode-Zeichenfolge. Wie @Naaff sagt, ASCII ist ein Spezialfall von UTF-8 (und ISO-8859- * und viele andere Kodierungen), also wenn es in Ihrem Fall ist, gibt es keine Sorgen (eine Fußnote in den Dokumenten erinnert die Benutzer dieser Tatsache könnte _them_ speichern Sorge;-). –
Gute Antwort, danke :) – Gili