编码tr(ubuntu)和tr(mac)之间的差异

时间:2011-02-26 20:03:22

标签: ubuntu encoding character-encoding

echo – | tr ’ X

在我的Mac上:正确打印 -

在Ubuntu 10.10上:打印XX

为什么?

作为参考,第一个字符是'EN DASH'(U + 2013),第二个字符是'右单引号'(U + 2019)

编辑:我现在改用Perl。我使用的神奇咒语是:

perl -CSD -p -Mutf8 -e 'tr/A-ZÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛÇa-zäëïöüáéíóúàèìòùâèìòùñçßœ/ /cs'

这意味着:除了我能想到的所有字母,用空格替换任何字符,然后挤压空格。

1 个答案:

答案 0 :(得分:1)

GNU coreutils tr存在多字节字符问题 - 它认为它们是一个单字节字符序列。

考虑到这一点,你在Linux上看到的是“预期的”:

$ echo – | od -t x1
0000000 e2 80 93 0a
0000004
$ echo ’ | od -t x1
0000000 e2 80 99 0a
0000004
$ echo – | tr ’ X | od -t x1
0000000 58 58 93 0a
0000004

编辑:

对于一组UTF-8兼容实用程序,您可能需要查看Heirloom Toolchest。它包含tr实现,显然有UTF-8支持,但我还没有测试过。