2011-04-28 7 views
11

Estoy intentando que las palabras cirílicas estén en latín, así que puedo tenerlas en urls. Yo uso icu4j transliterator, pero todavía da caracteres extraños como este: Vil'ândimaa. Debería ser más como viljandimaa. Cuando copio esa url estas letras se convierten en% ... algo de mierda.icu4j cirílico al latín

¿Alguien sabe cómo obtener cirílico para a-z con icu4j?

ACTUALIZACIÓN

No se puede responder a mí mismo ya, pero se encontró que esta pregunta fue muy útil: Converting Symbols, Accent Letters to English Alphabet

Respuesta

14

Modifique su identifier para hacer lo que quiera. Puede quitar los caracteres no deseados utilizando una expresión regular con la transformación Remove.

Por ejemplo, considere la cadena "'E & # x00E9; & # x043c; & # x0430; & # x0442; & # x0435; & # x043c; & # x0430; & # x0442; & # x0438; & # x043a; & # x0430; ":

"'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430" 

El identificador "Any-Latin; NFD; [^\\p{Alnum}] Remove" se transcribir a América (que todavía puede incluir acentos), se descomponen los caracteres acentuados en la letra y diacríticos y eliminar cualquier cosa que no sea alfanumérico. La cadena resultante es "Eematematika".

Puede leer más sobre los identificadores en General Transforms en el sitio web de la ICU.


Ejemplo:

//import com.ibm.icu.text.Transliterator; 
String greek 
     = "'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430"; 
String id = "Any-Latin; NFD; [^\\p{Alnum}] Remove"; 
String latin = Transliterator.getInstance(id) 
          .transform(greek); 
System.out.println(latin); 

probados contra ICU4J 49.1.

+0

Gracias McDowell: ¿podría darnos un ejemplo realmente rápido? –

+0

@Nicholas Tolley Cottrell - Ejemplo agregado. – McDowell

+0

Gracias de nuevo McDowell - Terminé usando "Any-Latin; NFD" porque quería preservar espacios. –

0

no tiene idea acerca icu4j, pero in the Unicode table Cyrillic takes sólo una pequeña gama. En lugar de transmitir a bibliotecas de terceros con funciones poco claras, definiría una secuencia de transliteración para cada símbolo cirílico e hice la traducción yo mismo.

P.S. ¿De qué idioma proviene la palabra "viljandimaa"? No me suena cirílico ...

+0

Gracias por responder. Sus ubicaciones estonias son rusas. – ivar

Cuestiones relacionadas