Domanda

Sto cercando di ottenere in cirillico parole di essere in latino modo che io possa avere in URL. Io uso ICU4J transliterator, ma dà ancora personaggi strani come questo: Vil'ândimaa . Dovrebbe essere più come Viljandimaa . Quando ho copia che url queste lettere si rivolgono a% .. qualcosa di inutile.

Qualcuno sa come ottenere il cirillico ad a-z con ICU4J?

Aggiorna

Non posso rispondere io già, ma ha trovato questa domanda che è stato molto disponibile: Simboli Conversione, Accent lettere a alfabeto inglese

È stato utile?

Soluzione

Modifica la identificatore per fare quello che vuoi. È possibile eliminare i caratteri indesiderati utilizzando un'espressione regolare con il Remove trasformare.

Ad esempio, si consideri la stringa "'EE ??????????" :

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

Il "Any-Latin; NFD; [^\\p{Alnum}] Remove" identificatore sarà traslitterare al latino (che può ancora comprendere accenti), caratteri accentati decompongono nel lettere e segni diacritici e rimuovere tutto ciò che non è un alfanumerico. La stringa risultante è "Eematematika" .

Si può leggere di più sugli identificatori ai sensi trasforma generali sul sito web ICU.


Esempio:

//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);

Provato contro ICU4J 49,1.

Altri suggerimenti

non hanno idea di ICU4J, ma nella tabella Unicode cirillici prende solo un piccolo intervallo. Invece di inoltro su librerie di terze parti con lavorazioni poco chiare, mi piacerebbe definire una sequenza di traslitterazione per ogni simbolo cirillico e ha fatto la traduzione me stesso.

P.S. Che lingua parola "Viljandimaa" viene da? Non sembra cirillico a me ...

Date un'occhiata a: https://ru.stackoverflow.com/questions/633355 / ????????-??????????-??????-??????????????-??-java

Add denepdency:

<dependency>
    <groupId>com.ibm.icu</groupId>
    <artifactId>icu4j</artifactId>
    <version>63.1</version>
</dependency>

E traslitterare:

var CYRILLIC_TO_LATIN = "Latin-Russian/BGN"
// var CYRILLIC_TO_LATIN = "Russian-Latin/BGN"
Transliterator toLatinTrans = Transliterator.getInstance(CYRILLIC_TO_LATIN);
String result = toLatinTrans.transliterate(st);
System.out.println(result);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top