在我的Java代码中,我正在从数据库中检索一些多级数据并制作一些XML DOM,该数据作为某个节点的值,然后将DOM转换为字符串并通过HTTPURLCONNECTION将BYTEST转换为ASP页面,但是在接收方以某种方式结束数据的数据看起来像????而不是某些多材料值。请建议该怎么做。

我已经在做的事情..

1)我已经设置了 -Dfile.encoding =UTF8 作为系统属性2)使用 TransformerFactory 为了将我的XML DOM转换为字符串,我已经设置了

 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)...在这里失败并开始给出内部服务器错误...请建议第二种方法有什么问题。

有帮助吗?

解决方案

很多 潜在的转换。您应该在每个步骤验证数据:

  • 检查您是否正确地将其从数据库中获取
  • 看看变换后的XML是什么样子
  • 观看网络上发生的事情(包括HTTP标头)
  • 确切地检查您进入ASP的内容

不要只是打印出琴弦 作为 字符串 - 通过将其投射到每个字符的Unicode值 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