Java 프로그램을 호출하는 터미널에서 문자 인코딩 세트를 감지하는 방법이 있습니까? Windows에서 "chcp"도구를 호출하고 출력을 파싱 할 수 있습니다.유닉스 터미널 문자 인코딩을 어떻게 탐지하나요?
하지만 Linux 또는 Mac은 어떻습니까?
Java 프로그램을 호출하는 터미널에서 문자 인코딩 세트를 감지하는 방법이 있습니까? Windows에서 "chcp"도구를 호출하고 출력을 파싱 할 수 있습니다.유닉스 터미널 문자 인코딩을 어떻게 탐지하나요?
하지만 Linux 또는 Mac은 어떻습니까?
확인 locale(1) man 페이지
당신은 변수 LANG 환경을 설정하여이를 변경할 수 있습니다
$ export LANG=en_US.iso88591
$ locale
LANG=en_US.iso88591
LC_CTYPE="en_US.iso88591"
LC_NUMERIC="en_US.iso88591"
LC_TIME="en_US.iso88591"
LC_COLLATE="en_US.iso88591"
LC_MONETARY="en_US.iso88591"
LC_MESSAGES="en_US.iso88591"
LC_PAPER="en_US.iso88591"
LC_NAME="en_US.iso88591"
LC_ADDRESS="en_US.iso88591"
LC_TELEPHONE="en_US.iso88591"
LC_MEASUREMENT="en_US.iso88591"
LC_IDENTIFICATION = "en_US.iso88591로"
문제는 로캘이 터미널 인코딩을 변경 한 후에도 동일한 출력을 제공한다는 것입니다 ... 새 콘솔에 대한 기본 콘솔 인코딩을 제공합니다 ... – Epaga
터미널로부터 정의 된 통신 경로가 없습니다 응용 프로그램을 터미널 창 내부에서 실행되는 프로세스 (창 크기 변경과 같이 에뮬레이트되는 터미널에 의해 정의 된 것보다 짧음)에 적용합니다. 다른 유닉스 계열 OS에서도 마찬가지입니다. 환경 변수는 프로세스가 시작될 때만 계승 될 수 있습니다. 이러한 환경 변수의 값을 보면 할 수있는 것이 전부입니다.
터미널 창이 열려있는 동안 사람들이 인코딩을 변경한다고 실제로 기대합니까? 나는 이것이 일반적인 유스 케이스라고 상상할 수 없다.
@Epage는 내 대답을 업데이트했습니다. – stacker