sort로 한글정렬, 왜 en_US에서는 왜 안될까요?

lacovnk의 이미지

en_US.utf8 사용중인데, 한글 정렬이 안됩니다.

반면, LC_ALL=C 라고 하면 정렬됩니다. (native byte order를 사용한다고 man에 되어있군요)

그런데, english locale에서 보면, 그럼 한글은 전혀 정렬하지 않는건가요? locale에 정의되지 않은 것이라면 C locale( ? )의 기준으로 처리해야 할 것 같은데, 그냥 두는 것 같습니다.

이런 구현의 이유는 무엇인가요?

Prentice의 이미지

LC_COLLATE만 ko_KR.UTF-8로 해보세요.

lacovnk의 이미지

음. 다시 정리하면..

LC_ALL=ko_KR.utf8 로 하면 물론 한글 정렬이 잘 됩니다만,
LC_ALL=en_US.utf8로 하면 안됩니다.
반면, LC_ALL=C도 잘 됩니다. (native byte order라 찜찜한가..)

en_US 로케일에서 정의되지 않은 문자이면 마땅히 native byte order로 생각해서 LC_ALL=C인 경우 처럼 동작해야 할 것 같은데, 그냥 무시하는 이유가 무엇인지 알고 있습니다. 정의되지 않은 동작인건가요? 그렇다면 너무 융통성없이 동작하는 것 같기도 하고요.