멀티 바이트 캐릭터가 손상 되었습니까 ???? 데이터베이스에서 읽고 httpurlConnection을 사용하여 ASP 페이지에 게시 할 때
-
15-11-2019 - |
문제
Java 코드에서 데이터베이스에서 일부 멀티 바이트 데이터를 검색하고 일부 XML DOM을 검색하고 있으며, 해당 데이터를 일부 노드의 값으로 한 다음 DOM을 문자열로 변환하고 HTTPURLConnection을 통해 DOM을 ASP 페이지로 바꾸는 것을 게시합니다. ???? 다중 반바이트 값 대신에 무엇을 해야하는지 제안하십시오.
내가 이미하고있는 일 ..
1) 나는 설정했다 -Dfile.encoding =UTF8
시스템 속성으로 2) 사용 중 TransformerFactory
XML dom을 String으로 변환하기 위해 설정했습니다.
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8")
인코딩이 적절한 지 확인합니다. 내가 잘못되고있는 곳을 제안 해주세요.
@Jon Skeet 여기에 추가 할 몇 가지가 더 몇 개 더 있습니다 ... 1) 데이터베이스에서 데이터를 올바르게 얻고 있습니다.
이전에 게시하기 위해 나는 같은 것을 사용하고있었습니다
'dout = new DataOutputStream(urlconn.getOutputStream());'
'dout.write(strXML.getBytes());'
'dout.write(strXML);'
그리고 수신기 끝에서 결과 데이터가 변환되었습니다. ????? 그러나 나는 전환했다
'
dout=new OutputStreamWriter(urlconn.getOutputStream(),"UTF8");'
'dout.write(strXML);'
그런 다음 수신기 끝의 데이터가 적절한 것으로 보이지만이 경우 수신기 끝에서 처리되는 방식으로 문제가 발생합니다. 수신기 ASP 코드에서 사용 중입니다 objStream.WriteLine (oXMLDom.xml)
... 그리고 여기에서 실패하고 내부 서버 오류가 발생하기 시작합니다 ... 두 번째 접근 방식에 무엇이 잘못되었는지 제안하십시오.
해결책
거기 있습니다 많이 잠재적 인 전환이 진행되고 있습니다. 모든 단계에서 데이터를 확인해야합니다.
- 데이터베이스에서 올바르게 꺼내고 있는지 확인하십시오.
- 변환 된 XML의 모습을 확인하십시오
- 네트워크를 넘어서서 무엇을 시청하십시오 (HTTP 헤더 포함)
- ASP에서 무엇을 받고 있는지 정확히 확인하십시오
줄을 인쇄하지 마십시오 ~처럼 문자열 - 각 문자의 유니 코드 값을 로그인하여 int
:
for (int i = 0; i < text.length(); i++)
{
char c = text.charAt(i);
log("Character " + c + " - " + (int) c);
}