2011-08-09 5 views
0

안녕하세요 단순 코드가있다. jvm에서 String의 내부 표현은 이미 알고있는 것처럼 UTF-16 문자를 사용하지만, 결과 문자열은 인코딩이 "UTF-16"으로 설정된 헤더를 포함해야하며, originla xml은 UTF-8이었습니다. 하지만 난 얻을 : XML을 변환 부호화 문제

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

은 (또한 독립 속성이 잘못된 것 같다) 변압기의 예는 다음과 같습니다 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl (내가 무슨 생각 기본값) 그래서 내가 여기서 무엇을 그리워합니까?

+0

결국 문제를 해결할 수 있었습니까? 나는 이제 하나의 앱에서 문제를 쳤다. 정말로 진절머리 나는. 나는 출처를 확인했다. 'encoding' 값은 간단히 [전달되지 않습니다] (http://www.grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/com/sun/org/apache/)입니다. xalan/internal/xsltc/trax/TransformerImpl.java # TransformerImpl.transform % 28javax.xml.transform.Source % 2Ccom.sun.org.apache.xml.internal.serializer.SerializationHandler % 2Cjava.lang.String % 29)를 트랜스 레트. –

답변

1

명시 적으로 UTF-16을 출력 인코딩으로 선언하는 작성기를 사용하십시오. ByteArrayOutputStream을 감싸는 OutputStreamWriter(OutputStream out, String charsetName)을 시도해보고 이것이 작동하는지 확인하십시오.

+0

xml에서 인코딩 속성을 변경해야하는 이유는 무엇입니까? 내가 원하는 건 트랜스 포머를 사용하여 XML 헤더의 인코딩을 변경하는 것이다. (작동하지 않는다) – csviri

+0

변압기가 명시 적 인코딩을 알고있을 수 있기 때문에? –

+0

네,하지만 그것을 시도하고 작동하지 않았다 : ( – csviri

0

나는 지금 스스로 테스트를 작성했습니다. 하나의 작은 변화 :

t.transform(ds,new StreamResult(new File("dest.xml"))); 

나도 같은 결과를 하지만이 파일은 실제로 UTF-16으로 인코딩, 16 진수 편집기로 확인할 수 있습니다. 이상한 이유로 xml 선언은 변경되지 않습니다. 따라서 코드가 작동합니다.

+0

내 질문에 대한 내 '이 이상한 이유는'내 문제가 인코딩이 변경되지 않습니다 (그것은 나뿐만 아니라 작품),하지만 XML 선언입니다 변경되지 않았습니다 ... 당신도 썼습니다. – csviri

+0

이것은 다소 PITA입니다. 나는 Xalan에 확인하고 그들의 메일 링리스트에 글을 쓸 것입니다. –