0

在我的 java 代码中,我从数据库中检索一些多字节数据并制作一些 xml DOM,将该数据作为某个节点的值,然后将 DOM 转换为 String 并通过 HTTPURLConnection 将字节测试发布到 ASP Page,但在接收端以某种方式结束数据显示为???? 而不是一些多字节值。请建议该怎么做。

我已经在做的事情..

1)我已设置-Dfile.encoding =UTF8为系统属性 2)在TransformerFactory用于将我的 XML DOM 转换为 String 时,我已设置

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

以确保那里的编码正确。请建议我哪里出错了。

@Jon Skeet 这里要添加的东西很少...... 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) ......在这里它失败并开始给出内部服务器错误......请建议第二种方法有什么问题。

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 回答