Frage

Also, ich arbeite an einem einfachen-C (ANSI 9899: 1999) Projekt, und ich versuche, herauszufinden, wo zu beginnen re:. Unicode, UTF-8, und alles, was Jazz

Im Einzelnen ist es ein Sprachdolmetscher Projekt, und ich habe zwei primäre Orte, wo ich brauche würde Unicode zu behandeln: Lesen in Quelldateien (die Sprache unterstützt angeblich Unicode-Kennungen und so weiter), und in ‚string‘ Objekten

Ich bin vertraut mit all den offensichtlichen Grundlagen über Unicode UTF-7/8/16/32 & UCS-2/4, so weiter und so fort ... Ich suche vor allem für nützlich, C-spezifisch (das ist, bitte nicht C ++ oder C #, das alles ist, was hier auf sO vorher) Ressourcen wie meine ‚nächsten Schritte‘ zu implementieren Unicode-friendly stuff ... in C dokumentiert worden ist.

Alle Links, Man-Pages, Wikipedia-Artikel, Beispielcode ist alles sehr willkommen. Ich werde auch versuchen, eine Liste solcher Ressourcen hier in der ursprünglichen Frage zu erhalten, für jeden, der später über es passiert.


War es hilfreich?

Lösung

International Components for Unicode für den Umgang mit Unicode eine portable C-Bibliothek zur Verfügung stellt. Hier ist ihr Elevator Pitch für ICU4C:

  

Die C- und C ++ Sprachen und viele Betriebssystemumgebungen bieten keine volle Unterstützung für Unicode und standardkonformen Text Abfertigungsdienste. Auch wenn einige Plattformen gute Textdienste Umgang mit Unicode tun bieten, Code portable Anwendung kann nicht von ihnen Gebrauch machen. Die ICU4C Bibliotheken füllt diese Lücke. ICU4C bietet eine offene, flexible, tragbare Grundlage für Anwendungen Einsatz für ihre Software Globalisierung Anforderungen. ICU4C eng verfolgt Industriestandards wie Unicode und CLDR (Common Locale Data Repository).

Andere Tipps

GLib hat einige Unicode-Funktionen und ist eine ziemlich leichte Bibliothek. Es ist nicht in der Nähe von dem gleichen Maß an Funktionalität, die ICU bietet, aber es könnte für einige Anwendungen gut genug sein. Die anderen Merkmale von GLib sind auch gut für tragbare C-Programme zu haben.

  

GTK + ist oben auf GLib gebaut. GLib stellt die grundlegenden algorithmischen Sprachkonstrukte häufig in Anwendungen dupliziert. Diese Bibliothek verfügt über Funktionen wie (diese Liste keine umfassende Liste ist):

     
      
  • Objekt und Typ-System
  •   
  • Hauptschleife
  •   
  • dynamischer Laden von Modulen (d-Plug-In)
  •   
  • Thread-Unterstützung
  •   
  • Timer Unterstützung
  •   
  • Memory Allocator
  •   
  • Threaded-Warteschlangen (synchron und asynchron)
  •   
  • Listen (einzeln verbunden sind, doppelt verknüpften, doppelt beendet)
  •   
  • Hash-Tabellen
  •   
  • Arrays
  •   
  • Bäume (N-ary und binäre balanced)
  •   
  • String-Dienstprogramme und charset Handhabung
  •   
  • Die lexikalischen Scanner und XML-Parser
  •   
  • Base64 (codiert für & Decodierung)
  •   

Ich denke, eine der interessantesten Fragen ist - was sollte Ihr kanonisches internes Format für Strings sein? Die 2 offensichtliche Wahl (zumindest für mich) ist

a) utf8 in Vanille-c-strings b) utf16 in unsigned short Arrays

In früheren Projekten habe ich immer gewählt utf-8. Warum ; weil sein der Weg des geringsten Widerstandes in der C-Welt. Alles, was Sie mit (stdio, string.h usw.) sind Schnittstellen wird funktionieren.

Als nächstes kommt - was für Dateiformat. Das Problem hierbei ist, dass die sichtbar an den Benutzer (sofern Sie nicht den einzigen Editor für Ihre Sprache zur Verfügung stellen). Hier Ich denke, man muss nehmen, was sie Ihnen und versuchen, durch spähen (Byte Order Mark Hilfe)

zu erraten
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top