멀티 바이트 캐릭터가 손상 되었습니까 ???? 데이터베이스에서 읽고 httpurlConnection을 사용하여 ASP 페이지에 게시 할 때

StackOverflow https://stackoverflow.com/questions/5050894

문제

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);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top