代码之家  ›  专栏  ›  技术社区  ›  watain

Bash:将非ASCII字符转换为ASCII

  •  29
  • watain  · 技术社区  · 16 年前

    如何转换字符串,如 Žvaigždės aukÅ¡tybėj užges äüöÖÜÄ Zvaigzdes aukstybej uzges auoOUA

    4 回复  |  直到 16 年前
        1
  •  62
  •   Michael Krelin - hacker    16 年前

    根据您的机器,您可以尝试通过管道传输您的字符串

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

    (或者不管您的编码是什么,如果不是utf-8)

        2
  •  17
  •   Claudio d'Angelis    9 年前

    您可能可以使用iconv。

    例如,字符串:

    vaigds auktybj uges或

    是文件testutf8.txt,utf8格式。

    运行命令:

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

    结果:

    Zvaigzdes aukstybej Uzzes或auoOUA

        3
  •  7
  •   Emil Vikström    16 年前
    echo Hej på dig, du den dära | iconv -f utf-8 -t us-ascii//TRANSLIT
    

    Hej pa dig, du den dara
    
        4
  •  0
  •   GLNB    5 年前

    您还可以使用python库 unidecode 为此:

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

    Zvaigzdes aukstybej uzges auoOUA
    

    看见 this post 对于其他方法。

        5
  •  -2
  •   Zombo tliff    11 年前
     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) {
        }
    
    推荐文章