Wie die Arbeit mit UTF-8 in C++, Konvertierung von anderen Encodings auf UTF-8

Ich weiß nicht, wie zu lösen:

Vorstellen, wir haben 4 websites:

  • EIN: UTF-8
  • B: ISO-8859-1
  • C: ASCII -
  • D: UTF-16

Mein Programm in C++ geschrieben, tut Folgendes: Sie lädt eine Webseite und analysiert Sie. Aber es muss den Inhalt verstehen. Mein problem ist nicht die Analyse, die gemacht wird mit ASCII-Zeichen wie ">" oder "<".

Das problem ist, dass das Programm finden alle Wörter aus der website ist text. Ein Wort ist eine beliebige Kombination von alphanumerischen Zeichen.
Dann sende ich diese Worte zu einem server. Die Datenbank und das web-frontend UTF-8.
Also meine Fragen sind:

  • Wie kann ich umwandeln "alle" (oder die meisten verwendet) die Zeichenkodierung auf UTF-8?
  • Wie kann ich die Arbeit mit UTF-8-strings in C++? Ich denke wchar_t funktioniert nicht, weil es ist 2 bytes lang. Code-Punkte, die in UTF-8 bis zu 4 Byte lang...
  • Gibt es Funktionen wie isspace(), isalnum(), strlen(), tolower() für solche UTF-8-strings?

Bitte beachten: ich mache nicht jede Ausgabe(wie std::cout) in C++. Nur die Filterung des aus die Worte und senden Sie Sie an den server.

Weiß ich über UTF8-CPP, aber es hat keine is*() Funktionen. Und wie ich gelesen habe, es konvertiert nicht von anderen Zeichencodierungen nach UTF-8. Nur von UTF-* auf UTF-8.

Edit: ich vergaß zu sagen, dass das Programm portable: Windows, Linux, ...

  • Ein gutes cross-Plattform-Bibliothek für die Bearbeitung von Unicode (codepoint Eigenschaften, Zeichensatz-Konvertierungen etc.) ist IBM ICU obwohl es ist wahrscheinlich overkill für Ihre Bedürfnisse.
  • Ich denke, wchar_t funktioniert nicht, weil es ist 2 bytes lang => es ist schlimmer, als dass wchar_t ist compiler - /Ziel spezifische, mit MSVC es werden 2 bytes lang, aber mit gcc und clang es ist 4 bytes lang.
  • viele Projekte und Produkte, die ICU verwenden, nur für die Funktionen für die Konvertierung, so würde ich nicht denken, es als overkill. Sie konnte nur die Allgemeine Bibliothek oder auch statisch verknüpft werden.
InformationsquelleAutor Christoph | 2013-04-25
Schreibe einen Kommentar