如何准确地在UNIX中转换字符大小写? (假设i18N)

时间:2009-06-04 19:25:28

标签: internationalization locale case-sensitive

我试图了解如何在UNIX中准确地操作字符和字符集,因为存在不同的语言环境 - 并且这样做不需要UNIX标准项之外的特殊工具。

我的研究向我展示了德国尖锐角色的问题:一个角色变成两个 - 以及其他问题。使用tr显然是一个非常糟糕的主意。我看到的唯一选择是:

echo StUfF | perl -n -e "print lc($_);"

但我不确定它会起作用,它需要Perl - 这不是一个坏的要求,而是一个非常大的锤子......

awk和grep以及sed和......怎么样?这或多或少是我的问题:我怎样才能确定每个语言环境中的文本都是低级的?

2 个答案:

答案 0 :(得分:2)

Perl lc / uc适用于大多数语言,但它无法正常使用土耳其语,有关详细信息,请参阅this bug report of mine。但是如果你不需要担心土耳其语,那么Perl就不错了。

答案 1 :(得分:0)

您无法确定每个区域设置中的文本是否正确。这是不可能的,软件库中总是存在一些关于i18n相关人员实施的错误。

如果你不害怕使用C ++或Java,你可以看一下ICU实现广泛的整理,规范化等规则。