2009-12-01 7 views
5

나는 자바에서 다음을 수행하십시오인코딩 CP1252

System.out.println(System.getProperty("file.encoding"));

나는 인코딩으로 cp1252를 얻을.

이 값의 출처를 알 수있는 방법이 있습니까? (환경 변수와 비슷합니다)

Windows XP에서 systeminfo와 같은 명령을 사용하여 명령 프롬프트에 인코딩 값을 인쇄하고 싶습니다.

+0

아마도 관련 정보는 http://stackoverflow.com/questions/1336930에 있습니다./how-do-you-you-you-do-you-specify-java-file-encoding-value-consistent-with-underlying-바람 –

+0

그냥 fyi, http://cp1252.com은 widows 코드 페이지에 대한 정보가있다 1252 –

답변

-1

나는 그것이 그 값이 외부

+0

아니오, 그렇지 않습니다. 이것은 명령 행 도구 용 Windows 인코딩입니다. –

+1

Kico : 그렇지 않습니다. 명령 행에서 사용되는 코드 페이지는 아직 다른 코드 페이지입니다. – Joey

3

에서 검색 이해가되지 것 때문에이 인코딩은 JVM에 의해 설정됩니다 믿고, Windows에서 적어도 기존 코드 페이지가 아닌 유니 코드 텍스트에 사용됩니다. 그것은 이전의 ANSI API를 사용할 때 OS가 문자열을 변환하는 것과 같습니다. 새로운 프로그램의 경우 에 영향을 미치지 않아야합니다 (즉, 나는 슬프게도 API 함수의 A 변 수와 W 변이가 아닌 충분한 수의 프로그램을 볼 수 있습니다).

Java 프로그램은 유니 코드를 독점적으로 사용하므로 문제가되지 않습니다. 그러나 시스템의 코드 페이지에 텍스트 파일을 쓰거나 읽으려면 코드 파일이 필요합니다.

그러나 콘솔은 기본적으로 DOS 시대 (850 또는 437은 매우 일반적 임) 중 하나를 모방 한 OEM 인코딩을 사용하기 때문에 명령 프롬프트의 인코딩은 의미가 없습니다.

5

cp1252는 MS Windows (영어로 Microsoft에서 ANSI라고 함)의 영어 설치에서 기본 인코딩입니다. Java는 기본적으로 시스템 로케일을 기본 문자 인코딩으로 사용합니다. 이것은 시스템에 따라 다릅니다. 일반적으로 기본 인코딩을 사용하는 것을 좋아하지 않습니다. 내 텍스트가 순수 ASCII 일 것이라는 사실을 알고 있으면 무시합니다. 그렇지 않으면 InputStreamReader, OutputStreamWriter, String 등을 인스턴스화하거나 getBytes을 호출 할 때 인코딩을 명시 적으로 설정합니다.

cp1252는 이 아니며 Windows 명령 프롬프트의 기본 인코딩이입니다. 그것은 더 오래된 cp437이며 chcp 명령을 사용하여보고 변경할 수 있습니다.

1

이 정말 자바 함께 할 아무것도하지 않기 때문에, 당신은 단지 WSH 스크립트를 사용하도록 선택할 수 있습니다 : 또한

' save this script as printANSI.vbs 
' usage: cscript /Nologo printANSI.vbs 
Set objShell = CreateObject("WScript.Shell") 
cp = objShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001" &_ 
           "\Control\Nls\CodePage\ACP") 
WScript.Echo cp 

참조 chcp 명령을; Windows 명령 프롬프트 (some links in this blog post)에서 인코딩 작동 방식을 읽으십시오.

+0

감사합니다. mcdowell, 유용했습니다. – Arun

0

자바 소스 파일의 인코딩입니다. 텍스트 파일 인코딩을 변경하면 출력이 변경됩니다. eclipse에서 Resource 속성에서 변경하십시오 (Alt + Enter 또는 해당 파일을 마우스 오른쪽 단추로 클릭하고 Resource로 이동). 텍스트 파일 인코딩을 cp1252에서 다른 것으로 바꾸기, UTF-8, woo ... 더 이상 출력이 cp1252가되지 않습니다 ..