2009-12-29 14 views
26

Wie kann ich eine Zeichenfolge wie Žvaigždės aukštybėj užges oder äüöÖÜÄ in Zvaigzdes aukstybej uzges bzw. auoOUA mit Bash konvertieren?Bash: Konvertieren von Nicht-ASCII-Zeichen in ASCII

Grundsätzlich möchte ich nur alle Zeichen konvertieren, die nicht im lateinischen Alphabet sind.

Dank

Antwort

48

auf Ihrem Rechner Je können Sie versuchen, die Saiten durch

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

(oder was auch immer Ihre Codierung ist, wenn es nicht utf-8) kochend

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

gibt:

Hej pa dig, du den dara 
12

Sie könnten iconv verwenden.

Zum Beispiel die Zeichenfolge:

Zvaigzdes aukštybėj užges oder äüöÖÜÄ

ist in der Datei testutf8.txt, UTF-8-Format.

Laufender Befehl:

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

Ergebnisse in:

Zvaigzdes aukstybej uzges oder 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

Ist das bash? Ich glaube nicht ... – watain

+0

einverstanden mit @watain – guitarflow

+3

Leicht zu kritisieren, aber ein Neuling nahm die Anstrengung, wurde niedergeschrien und hat SO verlassen. [Langsam klatschen ..] Und was würden wir ohne iconv machen? – geotheory

Verwandte Themen