2009-12-29 31 views
26

¿Cómo puedo convertir una cadena como Žvaigždės aukštybėj užges o äüöÖÜÄ en Zvaigzdes aukstybej uzges o auoOUA, respectivamente, usando Bash?Bash: Convierte caracteres no ASCII a ASCII

Básicamente solo quiero convertir todos los caracteres que no están en el alfabeto latino.

Gracias

Respuesta

48

Dependiendo de su máquina puede probar las tuberías de sus cadenas a través

iconv -f utf-8 -t ascii//translit 

(o lo que su codificación es, si no es UTF-8)

4
echo Hej på dig, du den dära | iconv -f utf-8 -t us-ascii//TRANSLIT 

da:

Hej pa dig, du den dara 
12

Es posible que pueda usar iconv.

Por ejemplo, la cadena:

Žvaigždės aukštybėj užges o äüöÖÜÄ

está en testutf8.txt archivo, el formato UTF-8.

comando Duración:

iconv -f UTF8 -t US-ASCII//TRANSLIT testutf8.txt

resultados en:

Zvaigzdes aukstybej uzges o auoOUA

-4
try { 
     String name = "Žvaigždės aukštybėj užges "; 
     String s1 = Normalizer.normalize(name, Normalizer.Form.NFKD); 
     String regex = "[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+"; 

     String s2 = new String(s1.replaceAll(regex, "").getBytes("ascii"), "ascii"); 

    } catch (UnsupportedEncodingException e) { 
    } 
+2

Es bash? No lo creo ... – watain

+0

de acuerdo con @watain – guitarflow

+3

Fácil de criticar esto, pero un novato se tomó el trabajo, se gritó y ahora se fue. [Slow clap ..] ¿Y qué haríamos sin iconv? – geotheory

Cuestiones relacionadas