2017-12-22 21 views
1

컨텍스트 : Windows 10, cmd.exe, javac 9.0.1.javac가 명령 행에서 유니 코드를 출력하지 않습니다.

유니 코드로 인코딩 된 소스 코드가 있습니다. javac -encoding UTF-8 ...을 실행해도 오류가 발생하면 소스를 올바르게 표시 할 수 없습니다. 당신이 그림에서 볼 수 있듯이

enter image description here

, CLI는 잘 유니 코드 문자를 인쇄 할 수 있습니다.

+0

투표 마감의 이유는 무엇입니까? 이것은 나에게 합리적인 질문입니다. – eis

+0

누락 된';'을 수정하면 어떻게됩니까? 그러면 컴파일 된 코드가 예상대로 작동합니까? –

+0

여기 재미있는 커뮤니티 인 것 같습니다 .-) –

답변

2

javac이 터미널의 문자 인코딩을 사용하지 않는 것으로 보입니다.

당신은 플래그를 사용하여 JVM에 대한 문자 인코딩을 지정할 수 있습니다

java -Dfile.encoding=UTF-8 ... 

(또는 어떤 인코딩)

javac의 자바 프로그램의 주위에 그냥 얇은 래퍼입니다. -J 플래그를 사용하여 인수를 JVM에 직접 전달할 수 있습니다. 따라서 :

javac -J-Dfile.encoding=UTF-8 ... 
0

당신은

System.getProperty("file.encoding") 

을 실행하여 현재 (기본값) 인코딩을 알 수 있으며,이 속성을 기본 인코딩을 변경할 수 있습니다. 그것은 일반적으로 Windows의

- IBM KB에서 cp1252,

긴 스토리, 큐 :

내부적으로 자바 가상 머신 (JVM)은 항상 유니 코드 데이터 작동합니다. 그러나 JVM으로 전송되거나 전송 된 모든 데이터는 형식으로 file.encoding 등록 정보와 일치합니다. JVM 으로 읽은 데이터는 file.encoding에서 유니 코드로 변환되고 JVM에서 보낸 데이터는 유니 코드에서 file.encoding으로 변환됩니다.

+0

javac는 내 프로그램이 아닙니다. 'cp'는 옳은 것 같습니다. 그림에서 볼 수 있듯이 실제로는 유니 코드 문자를 표시 할 수 있습니다. 심지어는 모호한 문자까지 표시 할 수 있습니다. –

+1

'javac -J-Dfile.encoding = UTF-8 ... '을 사용해 보시겠습니까? –

+0

@AndyTurner 이것은 실제로 작동합니다! –