문제

String(byte[]) 생성자에서 사용하는 인코딩을 변경하는 방법이 있습니까?

내 코드에서는 String(byte[],String)을 사용하여 인코딩을 지정하지만 변경할 수 없는 외부 라이브러리를 사용하고 있습니다.

String src = "with accents: é à";
byte[] bytes = src.getBytes("UTF-8");
System.out.println("UTF-8 decoded: "+new String(bytes,"UTF-8"));
System.out.println("Default decoded: "+new String(bytes));

이에 대한 출력은 다음과 같습니다.

UTF-8 decoded: with accents: é à
Default decoded: with accents: é à

시스템 속성을 변경해 보았습니다. file.encoding 하지만 작동하지 않습니다.

도움이 되었습니까?

해결책

JVM을 시작하기 전에 로케일을 변경해야 합니다.보다:

자바, 버그 ID 4163515

어떤 곳에서는 JVM을 시작할 때 file.encoding 변수를 설정하여 이를 수행할 수 있음을 암시하는 것 같습니다.

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

...하지만 직접 시도해본 적은 없습니다.가장 안전한 방법은 운영 체제에서 환경 변수를 설정하는 것입니다.

다른 팁

에서 인용 기본문자 집합()

기본 숯은 가상-머신 스타트 업 동안 결정되며 일반적으로 기본 운영 체제의 로케일 및 숯에 따라 다릅니다.

대부분의 OS에서는 환경 변수를 사용하여 문자 세트를 설정할 수 있습니다.

내 생각엔 당신이 이것을 원하는 것 같아요:System.setProperty("file.encoding", "UTF-8");

몇 가지 문제가 해결되었지만 아직 다른 문제가 남아 있습니다.SO가 ISO-8859-1인 경우 문자 "í" 및 "Í"가 올바르게 변환되지 않습니다.시작할 때 JVM 옵션을 사용하면 문제가 해결됩니다.이제 NetBeans IDE의 Java 콘솔에서만 특수 문자를 표시할 때 문자 세트가 충돌합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top