Bash:将非ASCII字符转换为ASCII

时间:2009-12-29 14:56:50

标签: bash ascii

如何使用Bash将Žvaigždės aukštybėj užgesäüöÖÜÄ之类的字符串分别转换为Zvaigzdes aukstybej uzgesauoOUA

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

由于

5 个答案:

答案 0 :(得分:53)

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

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

(或者无论你的编码是什么,如果它不是utf-8)

答案 1 :(得分:14)

您可以使用iconv。

例如,字符串:

  

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

是文件testutf8.txt,utf8格式。

运行命令:

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

结果:

  

Zvaigzdes aukstybej uzges或auoOUA

答案 2 :(得分:4)

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

给出:

Hej pa dig, du den dara

答案 3 :(得分:0)

您也可以使用 python 库 unidecode 来执行此操作:

$ echo "Žvaigždės aukštybėj užges äüöÖÜÄ" | unidecode

输出:

Zvaigzdes aukstybej uzges auoOUA

有关其他方法,请参阅 this post

答案 4 :(得分:-3)

 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) {
    }