리눅스에서 한글 파일 인식이 안될 때

nothing·2021년 7월 25일
1

개요

업무 중 타 사(社)의 Application 구성 요소를 확인해봐야 하는 일이 있었다.
Application은 특이하게도 DB를 거의 사용하지 않고, 리눅스 내에 사용자 ID로 구분하여 파일로 관리를 하는 구조였다. 그런데 여기서 문제가 있었다.
바로.. 한글 디렉토리!

도대체 왜 서버에서 한글로 된 디렉토리를 사용하는 걸까?
정확한 사정은 모르지만... 난 아직도 이해할 수 없다... 😱

파일 확인 과정

이렇게 한글로 된 디렉토리는 아무리 File.exists("path")로 존재 여부를 확인하고자 해도 곧죽어도 falsereturn 했다.

이때, 내가 했던 뻘짓은 다음과 같다.

  1. java.io.File 패키지의 exists() 메서드 사용
  2. java.nio.file.Files 패키지의 Files.exists() 메서드 사용
  3. 리눅스 서버의 locale export하여 ko_kr.utf8로 수정
    export locale=ko_kr.utf8
  4. Servlet 내에서 해당 파일의 바이트로 확인

결과

하지만 위에서 말했듯 모두 뻘짓이었다.
결국 문제는 그 파일이 생성된 서버와 확인한 서버의 locale 설정이 달랐던 것이다.

또 여기서 의문점이 든다. 분명 위의 뻘짓#3에서 보면, locale 설정을 utf8로 맞췄는데 왜 안됐을까? 답은 서버의 locale 설정 중 LC_ALL 부분이 빈값이어서 그랬다.

export LC_ALL=ko_kr.utf8 명령어를 입력하여 정상적으로 locale 설정이 입력된 것을 확인 후 다시 확인한 결과, 정상적으로 인식되어 truereturn 하는 걸 확인하였다.

마무리

나는 이 문제가 도저히 이해가 안돼서 일주일을 끙끔 헤맸다.(심지어 주말에도...)
헤매고 헤매다, 기술 이사님에게 여쭤보자마자 10분도 안돼서 답을 알려주셨다.
역시 짬밥은 무시할 수 없구나...
그 일주일 동안 구글링을 해도 안나오고, 스택오버플로우에도 딱히 내용이 안나오기에 나와 같은 케이스가 많진 않으리라 생각되지만, 다들 조금이라도 헤매지 말라고 작성한다.

0개의 댓글