Question

Alors, je travaille sur une plaine-C (ANSI 9899: 1999) projet et essaie de comprendre où commencer re: Unicode, UTF-8, et tout ce que le jazz

.

Plus précisément, il est un projet d'interprète en langue, et j'ai deux endroits principaux où je vais avoir besoin de gérer Unicode: lire dans les fichiers sources (la langue prend en charge ostensiblement des identificateurs Unicode et autres), et dans les objets « string »

Je connais toutes les bases évidentes sur Unicode, UTF-7/8/16/32 et UCS-2/4, ainsi de suite et ainsi de suite ... Je suis surtout pour utile, C-spécifique (que est, s'il vous plaît pas C ++ ou C #, qui est tout ce qui a été documenté ici sur le SO précédemment) les ressources à mon « prochaines étapes » pour mettre en œuvre des choses Unicode-friendly ... en C.

Tous les liens, les pages de manuel, articles de Wikipedia, le code exemple, est tout extrêmement bienvenue. Je vais aussi essayer de maintenir une liste de ces ressources ici à la question initiale, pour tous ceux qui se dans plus tard.


Était-ce utile?

La solution

International Components for Unicode fournit une bibliothèque portable C pour le traitement unicode. Voici leur boniment pour ICU4C:

  

Le C et C ++ langues et de nombreux environnements de système d'exploitation ne fournissent pas un support complet d'Unicode et conformes aux normes des services de traitement de texte. Même si certaines plates-formes fournissent de bons services de traitement de texte Unicode, le code d'application portable ne peut pas les utiliser. Les bibliothèques ICU4C voit à combler cette lacune. ICU4C fournit une base portable ouvert, flexible, pour les applications à utiliser pour leurs besoins de la mondialisation du logiciel. ICU4C suit de près les normes de l'industrie, y compris Unicode et CLDR (référentiel commun de données Locale).

Autres conseils

GLib a une noreferrer fonctions Unicode et est une bibliothèque assez légère. Ce n'est pas près du même niveau de fonctionnalité que ICU offre, mais il pourrait être assez bon pour certaines applications. Les autres caractéristiques de GLib sont bien d'avoir des programmes portables C aussi.

  

GTK + est construit sur GLib. GLib fournit les constructions de langage algorithmique fondamentaux généralement dupliqués dans les applications. Cette bibliothèque a des caractéristiques telles que (cette liste n'est pas une liste exhaustive):

     
      
  • Objet et système de type
  •   
  • Boucle principale
  •   
  • chargement dynamique des modules (à savoir les plug-ins)
  •   
  • Support de fil
  •   
  • Support Timer
  •   
  • allocateur de mémoire
  •   
  • Queues filetée (synchrone ou asynchrone)
  •   
  • Listes (seuls lié doublement lié, à deux extrémités)
  •   
  • tables de hachage
  •   
  • Tableaux
  •   
  • arbres (N-aire binaire et symétrique)
  •   
  • Utilitaires de chaîne et de manutention charset
  •   
  • Le scanner lexical et analyseur XML
  •   
  • base64 (encodage et décodage)
  •   

Je pense que l'une des questions intéressantes est - ce que si votre format interne canonique pour les chaînes être? Les 2 choix évidents (pour moi au moins) sont

a) UTF8 dans les chaînes de c-vanille b) utf16 dans les tableaux courts non signés

Dans les projets précédents, j'ai toujours choisi utf-8. Pourquoi ; parce que son le chemin de moindre résistance dans le monde C. Tout ce que vous êtes relié (stdio, string.h etc) fonctionne très bien.

Vient ensuite - ce format de fichier. Le problème ici est que le visible à vos utilisateurs (sauf si vous fournissez le seul éditeur pour votre langue). Ici, je suppose que vous devez prendre ce qu'ils vous donnent et essayer de deviner par jeter un oeil (octet marques d'ordre aide)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top