Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多字节字符损坏为????从数据库读取并使用HTTPURLConnection发布到ASP页面时_Java_Oracle_Asp Classic_Multibyte_Corrupt Data - Fatal编程技术网

Java 多字节字符损坏为????从数据库读取并使用HTTPURLConnection发布到ASP页面时

Java 多字节字符损坏为????从数据库读取并使用HTTPURLConnection发布到ASP页面时,java,oracle,asp-classic,multibyte,corrupt-data,Java,Oracle,Asp Classic,Multibyte,Corrupt Data,在我的java代码中,我从数据库中检索一些多字节数据并生成一些xml DOM,将这些数据作为某个节点的值,然后将DOM转换为字符串,并通过HTTPURLConnection将bytest发布到ASP页面,但不知怎的,在接收端,数据显示为????而不是一些多字节值。请建议如何操作 我已经在做的事情 1) 我已将-Dfile.encoding=UTF8设置为系统属性 2) 在使用TransformerFactory将XML DOM转换为字符串时,我设置了 transformer.setOutput

在我的java代码中,我从数据库中检索一些多字节数据并生成一些xml DOM,将这些数据作为某个节点的值,然后将DOM转换为字符串,并通过HTTPURLConnection将bytest发布到ASP页面,但不知怎的,在接收端,数据显示为????而不是一些多字节值。请建议如何操作

我已经在做的事情

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

 transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8")
确保那里的编码是正确的。 请指出我错在哪里

@乔恩·斯基特在这里没有什么要补充的。。。1) 我正确地从数据库中获取数据2)转换后的XML也似乎是正确的,我通过将其保存到本地文件系统进行了检查。
对于之前发布的内容,我使用了类似

'dout = new DataOutputStream(urlconn.getOutputStream());'  
 'dout.write(strXML.getBytes());' 
 'dout.write(strXML);' 
接收端的结果数据被转换成了?????但后来我转到了
"

然后在接收器端的数据似乎是正确的。。。但在这种情况下,问题发生在接收端处理它的方式上。在我的接收方ASP代码中,我使用的是
objStream.WriteLine(oXMLDom.xml)
... 在这里,它失败并开始给出内部服务器错误。。。请说明第二种方法有什么问题。

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

  • 检查是否正确地将其从数据库中取出
  • 查看转换后的XML的外观
  • 观察网络上的内容(包括HTTP标头)
  • 准确检查ASP中的内容
不要只是将字符串打印为字符串—通过将每个字符的Unicode值强制转换为
int
,记录每个字符的Unicode值:

for (int i = 0; i < text.length(); i++)
{
    char c = text.charAt(i);
    log("Character " + c + " - " + (int) c);
}
for(int i=0;i
@schhajed:我不知道你的意思。这只是建议你应该看的东西。当您发现信息被破坏的位置时,您可以在该位置修复它。但是你需要先找出它失败的地方。@Jon Skeet请看一下我编辑的问题,我想我已经找到了它被破坏的确切位置。。请帮忙。@schhajed:好的。使用
DataOutputStream
肯定是错误的,而
OutputStreamWriter
是一个更好的主意。现在,当你说“ASP”-这是VB6ASP的经典代码吗?您是如何执行post操作的?@Jon Skeet是的,它的VB6 ASP经典代码。我正在使用
HttpUrlConnection
发布字符串格式的XML。。as
dout.write(strXML)。。同样在接收端ASP,当我使用`oXMLDom.save(filePath)`将其保存到某个路径时,它会被正确保存,但当使用
objStream.WriteLine(oXMLDom.xml)
时,它开始给出500个内部服务器错误..请suggest@schhajed:究竟是什么导致了内部错误?ASP服务器?您给出了几行代码,但没有明确它们在哪里执行。如果你把这段代码放到问题中去,每一段代码都放在它运行的上下文中,这会很有帮助。
for (int i = 0; i < text.length(); i++)
{
    char c = text.charAt(i);
    log("Character " + c + " - " + (int) c);
}