多重字符损坏为????从数据库读取并使用httpurlconnection发布到ASP页面
-
15-11-2019 - |
题
在我的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);
}
不隶属于 StackOverflow