2009-08-02 3 views
1

Ich arbeite mit einem XML-Dump von Wikipedia, der in UTF-8 codiert ist. Im Moment lese ich alles als std :: string ein. Wenn ich also std :: cout auf dem Bildschirm sehe, werden fremde Zeichen als Jibberish angezeigt.XML-Codierung in UTF-8 codieren

Der eigentliche Analysevorgang sucht nur nach ASCII-Zeichen, aber wenn ich die geparste Datei auf Platte schreibe, möchte ich die fremden Zeichen beibehalten. Mit anderen Worten, ich möchte, dass die Ausgabe dieselbe Kodierung wie die Eingabe hat.

Ist es OK, std :: string zu verwenden, oder muss ich etwas wie ICU verwenden? Die Bibliotheken, die ich mir angesehen habe, scheinen übermäßig kompliziert zu sein. Gibt es etwas, das ich schnell verwenden kann?

Antwort

1

UTF-8 ist die Standardcodierung für XML-Dokumente. Schreib es einfach in deine Datei. Es hat keinen Sinn, es in Unicode und wieder zurück zu konvertieren. Wenn es versehentlich auf Ihrem Bildschirm abgeladen wird, vermeiden Sie Ihren Blick :-)

Entfernen von ASCII-Zeichen wie '{' wird kein Problem verursachen. UTF-8 ist so konzipiert, dass kein Byte in einem Multi-Byte-Zeichen im Bereich 0-127 liegt und daher nicht mit einem ASCII-Zeichen verwechselt werden kann.

1

Die ganze Zeit, die Sie nicht brechen den Text und nicht-ASCII-Zeichen, die Sie sicher sind. Sie können Std :: String ohne Problem verwenden.

Ich meine, wenn Sie nicht beziehen sich auf die Inhalt der XML als Versuch, etwas wie geteilte Buchstaben oder Wörter zu tun, versuchen, Großbuchstaben Text, etc, haben Sie keine Probleme.

+0

Funktioniert das auch, wenn ich Zeichen aus der Zeichenfolge entfernen? Zum Beispiel möchte ich jedes Zeichen scannen und "{{" aus der Zeichenfolge entfernen, indem ich alle anderen Zeichen in eine neue Zeichenfolge kopiere. Wird das noch funktionieren ohne zu konvertieren? –

+3

Das Entfernen von ASCII-Zeichen verursacht kein Problem. UTF-8 ist so konzipiert, dass kein Byte in einem Multi-Byte-Zeichen im Bereich 0-127 liegt und daher nicht mit einem ASCII-Zeichen verwechselt werden kann. –