2008-11-24 11 views
46

Ich bin auf der Suche nach einer kleinen C-Bibliothek mit UTF8-Strings zu behandeln.Light C Unicode-Bibliothek

Speziell Splitting basierend auf Unicode-Trennzeichen für die Verwendung mit Stemming-Algorithmen.

Related posts haben vorgeschlagen: http://utfcpp.sourceforge.net/ (ausgezeichnet, aber C++ nicht C)

Hat:

ICU http://www.icu-project.org/

UTF8-CPP (I für meine Zwecke auf Embedded-Geräten es zu sperrig gefunden) Jeder fand plattformunabhängige, kleine Codebasis-Bibliotheken für die Behandlung von Unicode-Strings (muss keine Einbürgerung durchführen).

+1

utf8-cpp ist großartig! portiert reibungslos zu ios/android. header only libarary – barney

Antwort

31

Eine nette, leichte Bibliothek, die ich erfolgreich verwende, ist utf8proc.

7

UTF-8 ist speziell so konzipiert, dass viele Byte-orientierte String-Funktionen weiterhin funktionieren oder nur geringfügige Änderungen erfordern.

Cs strstr Funktion funktioniert zum Beispiel einwandfrei, solange beide Eingänge gültige, nullterminierte UTF-8-Strings sind. strcpy funktioniert gut, solange seine Eingabezeichenfolge an einer Zeichengrenze beginnt (z. B. der Rückgabewert strstr).

Sie brauchen nicht einmal eine separate Bibliothek!

+3

Sehr Wahr, bis jetzt musste ich nur Strings speichern/kopieren und tat genau das. Aber dann musste ich Wörter für die Indexierung aufteilen, damit ich sichergehen konnte, dass ich sie richtig behandle. – Akusete

+1

Während sie funktionieren, werden Suchfunktionen bei UTF-8-Zeichen wahrscheinlich nicht so gut funktionieren. Wenn z. B. festgestellt werden kann, dass ein UTF-8-Zeichen nicht sofort übereinstimmt (oft möglich, wenn es mit einem ASCII-Zeichen verglichen wird), kann die gesamte UTF-8-Zeichencodierung, die mehrere Bytes umfassen kann, übersprungen werden. Aber Sie haben Recht, dass einige der Funktionen von C mit UTF-8-Strings gut funktionieren, was einer der Gründe dafür ist, dass UTF-8 populär ist. – Ethan

+0

Nicht abstürzen ist nicht dasselbe wie das Arbeiten: etwas so einfaches wie die String-Größe funktioniert nicht für UTF-8. UTF-8 ist NICHT speziell für die Bibliothekskompatibilität konzipiert. –

15

Es gibt auch .