CentOS에 CP-1252를 추가하는 방법

CentOS에 CP-1252를 추가하는 방법

우리는 클라이언트가 CP-1252 문자 집합을 사용하는 로컬 Windows 컴퓨터에서 생성한 파일을 처리하고 있습니다. 때때로 백엔드(CentOS에서 실행)에서 이러한 파일 중 하나를 처리하는 동안 런타임 오류가 발생합니다(Java 백엔드이므로 RuntimeExceptions). 서버에 원격으로 접속하여 파일 이름을 바꾸고(UTF-8 사용) 다시 실행하면 파일이 완벽하게 처리됩니다.

이런 일이 발생하지 않도록 CentOS의 사용 가능한 문자 집합에 CP-1252를 "추가"할 수 있는 방법이 있습니까?

답변1

Java 동작에 대한 Oracle의 버그 보고서를 확인하세요.bug_id=4733494"기본 로케일"과 관련됩니다. Sun/Oracle의 이 버그 보고서(실제로 Sun/Oracle에서는 이 동작이 실제로 버그가 아니라 Java가 설계된 방식이라고 말합니다)에 따르면 다음과 같습니다.

1.4 이전의 JDK 버전에서는 항상 "C" 로케일을 ISO8859-1 문자 집합으로 강제했습니다. 릴리스 1.4 이상에서는 7비트 ASCII로 제한해야 하는 "C" 로케일을 지원합니다.

환경 변수를 시스템에 적합한 로캘 LC_ALL로 설정하는 것이 좋습니다 .en_US.ISO8859-1es_ES.ISO-8859-1

첨가:

export LC_ALL="en_US.ISO-8859-1"

Java 백엔드를 실행하는 명령 파일을 사용하면 문제가 해결됩니다.

이것은 SO 질문에도 문서화되어 있습니다.https://stackoverflow.com/questions/5663709/how-to-fix-java-when-if-refused-to-open-a-file-with-special-charater-in-filename

관련 정보