2009-06-04 3 views
2

다른 로케일의 존재를 감안할 때 정확하게 UNIX에서 문자 및 문자 세트를 조작하는 방법에 대한 느낌을 얻으려고합니다. UNIX 표준 항목 외부에 특별한 도구를 요구하지 않고 그렇게합니다.UNIX에서 대소 문자를 어떻게 정확하게 변환합니까? (i18N으로 가정)

나의 연구는 나에게 독일 샤프 캐릭터의 문제점을 보여주었습니다. 한 캐릭터는 두 가지 및 다른 문제로 바뀝니다. tr을 사용하는 것은 분명히 매우 나쁜 생각입니다. 내가 볼 수있는 유일한 대안은 이것이다 :

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

하지만 작동이 확실하지 않다, 그것은 펄이 필요합니다 - 반드시 나쁜 요구하지만, 아주 큰 망치 ...

무엇에 대한 awk 및 grep 및 sed 및 ...? 그것은 내 질문입니다. 텍스트가 모든 지역에서 더 낮은 케이스인지 어떻게 확신 할 수 있습니까?

+0

귀하의 가정은 정확합니다. –

답변

2

Perl lc/uc는 대부분의 언어에서 잘 작동하지만 터키어에서는 제대로 작동하지 않습니다. 자세한 내용은 this bug report of mine을 참조하십시오. 그러나 터키인에 대해 걱정할 필요가 없다면 Perl은 좋은 편입니다.

+0

글쎄, 터키어 "i"는 i18n/L10n 관련 문제의 일반적인 출처입니다. –

0

모든 로켈에서 텍스트가 올바른지 확신 할 수 없습니다. 그건 불가능합니다. i18n 관련 직원의 구현과 관련하여 소프트웨어 라이브러리에는 항상 오류가 있습니다.

C++이나 Java를 사용하는 것을 두려워하지 않는다면 광범위한 조합, 정규화 등의 규칙을 구현하는 ICU을 살펴보십시오.