Pregunta

Por lo tanto, estoy trabajando en una llanura-C (ANSI 9899: 1999) de proyectos, y estoy tratando de averiguar donde volver a empezar: Unicode, UTF-8, y todas esas

.

En concreto, es un proyecto de lenguaje intérprete, y tengo dos lugares principales donde voy a tener que manejar Unicode: la lectura en los archivos de origen (el lenguaje ostensiblemente soporta identificadores Unicode y tal), y en los objetos 'cadena'

Estoy familiarizado con todos los elementos básicos obvias acerca de Unicode, UTF-7/8/16/32 y UCS-2/4, etcétera, etcétera ... Lo que más me busca, C-específica útil (que es decir, por favor, no C ++ o C #, que es todo lo que se ha documentado previamente aquí en SO) como recursos para mis cosas 'próximos pasos para implementar Unicode ambiente ... en C.

Cualquier enlace, páginas de manual, artículos de Wikipedia, código de ejemplo, es todo muy bienvenido. También voy a tratar de mantener una lista de tales recursos aquí en la pregunta original, para cualquiera que pasa a través de ella más tarde.


¿Fue útil?

Solución

Componentes internacionales para Unicode proporciona una biblioteca portátil C para el manejo de Unicode. Aquí está su argumento de venta para ICU4C:

  

El C y C ++ idiomas y muchos entornos de sistemas operativos no proporcionan soporte completo para Unicode y servicios de manipulación de texto compatible con los estándares. A pesar de que algunas plataformas proporcionan buenos servicios de manipulación de texto Unicode, código de aplicación portátil no puede hacer uso de ellos. Las bibliotecas ICU4C cubre este hueco. ICU4C proporciona una base abierta, flexible y portátil para aplicaciones que utilizan para sus necesidades de globalización de software. ICU4C sigue de cerca los estándares de la industria, incluyendo Unicode y CLDR (Común Locale depósito de datos).

Otros consejos

GLib tiene algunos noreferrer funciones Unicode y es una biblioteca bastante ligero. No está cerca el mismo nivel de funcionalidad que ofrece la UCI, pero podría ser lo suficientemente bueno para algunas aplicaciones. Las otras características de GLib son buenos para tener a los programas portátiles C también.

  

GTK + se construye en la parte superior de GLib. GLib proporciona las construcciones del lenguaje algorítmico fundamentales comúnmente en aplicaciones duplicadas. Esta biblioteca tiene características tales como (esta lista no es una lista exhaustiva):

     
      
  • Objeto y sistema de tipo
  •   
  • bucle principal
  •   
  • carga dinámica de los módulos (es decir, los plug-ins)
  •   
  • Soporte de hilo
  •   
  • Soporte temporizador
  •   
  • asignador de memoria
  •   
  • roscados colas (asíncrono síncrono y)
  •   
  • listas (de enlace simple, doblemente enlazada, de doble punta)
  •   
  • Las tablas hash
  •   
  • Arrays
  •   
  • Árboles (N-ary y binario equilibrado)
  •   
  • utilidades de Cuerda y gastos de envío charset
  •   
  • escáner léxico y analizador XML
  •   
  • Base64 (codificación y decodificación)
  •   

Creo que una de las preguntas interesantes es - lo que debe su formato interno canónico para ser cadenas? Las 2 opciones obvias (al menos para mí) son

a) utf8 en vainilla c-cuerdas b) utf16 en matrices cortas sin signo

En proyectos anteriores siempre han elegido UTF-8. Por qué ; porque es el camino de menor resistencia en el mundo C. Todo el que interactúe (stdio, string.h etc.) no tendrán ningún problema.

A continuación viene - ¿qué formato de archivo. El problema aquí es que su visible para los usuarios (a menos que proporcione el único editor para su idioma). Aquí supongo que tienes que tomar lo que te dan y tratar de adivinar por asomándose (marcas de orden de bytes ayuda)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top