2010-09-22 17 views

Respuesta

19

Sede, http://en.wikipedia.org/wiki/Unicode_control_characters

Es posible que desee ver especialmente en C0 y C1 carácter de control http://en.wikipedia.org/wiki/C0_and_C1_control_codes

El wiki dice, el carácter de control C0 está en el rango U + 0000-U + 001F y U + 007F (que es el mismo rango que ASCII) y el carácter de control C1 está en el rango U + 0080-U + 009F

que no sea el carácter de control C, Unicode también tiene cientos de caracteres de control de formato, por ejemplo sin anotación de ancho cero, lo que hace que el espaciado de caracteres sea más cercano, o control de texto bidireccional. Estos caracteres de control de formato están bastante dispersos.

Más importante aún, ¿qué estás haciendo que requiere que conozcas los caracteres no imprimibles de Unicode? Lo más probable es que lo que sea que intentes hacer sea el enfoque equivocado para resolver tu problema.

+3

Quiero crear un generador de cadenas unicode al azar que genere caracteres imprimibles. –

+5

¿Quién puede imprimir? ¿Quieres incluir, por ej. todos los caracteres chinos? Muchos usuarios no tendrán fuentes para ellos, por lo que 'imprimirlos' no les daría nada, una caja en blanco o algún otro personaje de reemplazo inútil. – bobince

+5

Una buena razón es evitar exploits de seguridad: https://bugzilla.mozilla.org/show_bug.cgi?id=968576 –

-5

Unicode, término estricto, no tiene rango. Los números pueden ir infinito.

Lo que ha dado no es UTF8 que tiene 1 byte para caracteres ASCII.

En cuanto al rango, creo que no hay un rango de caracteres imprimibles. Siempre evoluciona Mira la página que di más arriba.

+7

Afaik Unicode solo se define hasta 0x10ffff, más allá de que no se asignarán puntos de código – Sebastian

13

Primero, debe eliminar la palabra 'UTF8' en su pregunta, no es pertinente (UTF8 es solo una de las codificaciones de Unicode, es algo ortogonal a su pregunta).

Segundo: el significado de "imprimible/no imprimible" es menos claro en Unicode. Quizás te refieres a un "graphical character"; y uno incluso puede disputar si un espacio es imprimible/gráfico. Los caracteres no gráficos consistirían, básicamente, en caracteres de control: el rango 0x00-0x0f más algunos otros que están dispersos.

De todos modos, la gran mayoría de los caracteres Unicode (más de 200,000) son "gráficos". Pero esto ciertamente no implica que sean imprimibles en su entorno.

Me parece una mala idea, si tiene la intención de generar una cadena Unicode "imprimible al azar", para intentar incluir todos los caracteres "imprimibles".

3

Lo que debe hacer es elegir una fuente y luego generar una lista de los caracteres Unicode que tienen glifos definidos para su fuente. Puede usar una biblioteca de fuentes como freetype para probar glifos (pruebe FT_Get_Char_Index (...)! = 0).

Cuestiones relacionadas