2011-02-03 20 views

Respuesta

8

Como escribí en another question, utf8proc es una biblioteca ligera y muy agradable para la funcionalidad básica de Unicode, incluida la normalización de cadenas Unicode.

+0

Tengo problemas en Visual Studio 2010 con utf8proc. typedef unsigned char bool; -> no compila en C++ –

+0

No estoy familiarizado con VS 2010, pero ¿no puede compilar la biblioteca como biblioteca C y vincularla de esa manera? – Avi

+0

El problema está en el archivo de encabezado por eso no podemos usarlo incluso como una biblioteca estática. Una solución simple es reemplazar bool, true, false para _bool, _true, _false occurrence. Ejemplo: typedef unsigned char _bool; enum {_false, _true}; –

1

"Ligero" en su contexto significa "con funcionalidad limitada". Utilizaría la fuente de ICU como ejemplo, y la referencia http://unicode.org/reports/tr15/ para implementar esta funcionalidad "ligera".

2

Puede construir una unidad de cuidados intensivos con mínimo (o posiblemente, sin otros datos, creo que todos los datos de normalización ahora son internos), y luego vincular estáticamente. No lo he probado recientemente, pero creo que el tamaño total es bastante pequeño en ese caso.

3

Para Windows, no es el NormalizeString() función (por desgracia para Vista y más tarde, sólo - por lo que yo veo en MSDN):

http://msdn.microsoft.com/en-us/library/windows/desktop/dd319093%28v=vs.85%29.aspx

Es la forma más sencilla de ir que he encontrado hasta el momento . Supongo que es bastante liviano también.

int NormalizeString(
    _In_  NORM_FORM NormForm, 
    _In_  LPCWSTR lpSrcString, 
    _In_  int  cwSrcLength, 
    _Out_opt_ LPWSTR lpDstString, 
    _In_  int  cwDstLength 
); 
1

Una buena solución de UTF-8 es la función de glib g_utf8_normalize(). Requeriría convertir std :: wstring a std :: string (utf16 a utf8) si necesita esto también para wstring (lo que lo convertiría en una solución bastante costosa, por lo tanto, estoy buscando una solución mejor, si es posible con pure C++ (11) significa).

Cuestiones relacionadas