2009-12-29 310 views
26

如何使用Bash分别将Žvaigždės aukštybėj užgesäüöÖÜÄ这样的字符串转换为Zvaigzdes aukstybej uzgesauoOUABash:将非ASCII字符转换为ASCII

基本上我只想转换所有不是拉丁字母的字符。

感谢

回答

48

根据你的机器,你可以尝试通过

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

管道的弦上(或任何你的编码,如果不是UTF-8)

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

得到:

Hej pa dig, du den dara 
12

你也许可以使用iconv。

例如,字符串:

Žvaigždėsaukštybėjužges或äüöÖÜÄ

是在文件testutf8.txt,UTF8格式。

运行命令:

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

结果:

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

那是bash的?我不这么认为... – watain 2012-03-30 18:14:54

+0

赞同@watain – guitarflow 2013-04-16 16:44:08

+3

容易批评这一点,但一个新手采取了努力,大喊大叫,现在离开了SO。 [缓慢鼓掌..]没有iconv,我们会做什么? – geotheory 2015-12-19 09:35:49