0

私のjavaコードでは、データベースからマルチバイトデータを取得し、そのデータをノードの値として使用してxml DOMを作成し、DOMを文字列に変換し、HTTPURLConnectionを介してASPページにbytestを投稿していますが、どういうわけかレシーバーでデータを終了しています????として表示されています いくつかのマルチバイト値の代わりに。何をすべきかを提案してください。

私がすでにやっていること。

1)-Dfile.encoding =UTF8システムプロパティとして設定しました2)TransformerFactoryXML DOMを文字列に変換するために使用している間、設定しました

 transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8")

そこでエンコーディングが適切であることを確認します。私が間違っているところを提案してください。

@JonSkeetここに追加するものは他にいくつかあります...1)データベースからデータを正しく取得しています2)ローカルファイルシステムに保存して確認したところ、変換されたXMLも適切であるように見えます。
以前に投稿するために私は次のようなものを使用していました

'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) で...そしてここで失敗し、内部サーバーエラーが発生し始めます...2番目のアプローチの何が問題なのかを提案してください。

4

1 に答える 1

2

そこには多くの潜在的な変換が行われています。すべてのステップでデータを確認する必要があります。

  • データベースから正しく取得していることを確認してください
  • 変換されたXMLがどのように見えるかを確認する
  • ネットワークを通過するものを監視する(HTTPヘッダーを含む)
  • ASPで取得しているものを正確に確認してください

文字列を文字列として出力するだけでなく、次の場所にキャストして、各文字のUnicode値をログに記録しますint

for (int i = 0; i < text.length(); i++)
{
    char c = text.charAt(i);
    log("Character " + c + " - " + (int) c);
}
于 2011-02-19T13:13:30.623 に答える