컨텍스트 : Windows 10, cmd.exe, javac 9.0.1.javac가 명령 행에서 유니 코드를 출력하지 않습니다.
유니 코드로 인코딩 된 소스 코드가 있습니다. javac -encoding UTF-8 ...
을 실행해도 오류가 발생하면 소스를 올바르게 표시 할 수 없습니다. 당신이 그림에서 볼 수 있듯이
, CLI는 잘 유니 코드 문자를 인쇄 할 수 있습니다.
컨텍스트 : Windows 10, cmd.exe, javac 9.0.1.javac가 명령 행에서 유니 코드를 출력하지 않습니다.
유니 코드로 인코딩 된 소스 코드가 있습니다. javac -encoding UTF-8 ...
을 실행해도 오류가 발생하면 소스를 올바르게 표시 할 수 없습니다. 당신이 그림에서 볼 수 있듯이
, CLI는 잘 유니 코드 문자를 인쇄 할 수 있습니다.
javac이 터미널의 문자 인코딩을 사용하지 않는 것으로 보입니다.
당신은 플래그를 사용하여 JVM에 대한 문자 인코딩을 지정할 수 있습니다
java -Dfile.encoding=UTF-8 ...
(또는 어떤 인코딩)
javac의 자바 프로그램의 주위에 그냥 얇은 래퍼입니다. -J
플래그를 사용하여 인수를 JVM에 직접 전달할 수 있습니다. 따라서 :
javac -J-Dfile.encoding=UTF-8 ...
당신은
System.getProperty("file.encoding")
을 실행하여 현재 (기본값) 인코딩을 알 수 있으며,이 속성을 기본 인코딩을 변경할 수 있습니다. 그것은 일반적으로 Windows의
- IBM KB에서 cp1252
,
긴 스토리, 큐 :
내부적으로 자바 가상 머신 (JVM)은 항상 유니 코드 데이터 작동합니다. 그러나 JVM으로 전송되거나 전송 된 모든 데이터는 형식으로 file.encoding 등록 정보와 일치합니다. JVM 으로 읽은 데이터는 file.encoding에서 유니 코드로 변환되고 JVM에서 보낸 데이터는 유니 코드에서 file.encoding으로 변환됩니다.
javac는 내 프로그램이 아닙니다. 'cp'는 옳은 것 같습니다. 그림에서 볼 수 있듯이 실제로는 유니 코드 문자를 표시 할 수 있습니다. 심지어는 모호한 문자까지 표시 할 수 있습니다. –
'javac -J-Dfile.encoding = UTF-8 ... '을 사용해 보시겠습니까? –
@AndyTurner 이것은 실제로 작동합니다! –
투표 마감의 이유는 무엇입니까? 이것은 나에게 합리적인 질문입니다. – eis
누락 된';'을 수정하면 어떻게됩니까? 그러면 컴파일 된 코드가 예상대로 작동합니까? –
여기 재미있는 커뮤니티 인 것 같습니다 .-) –