1

我有一个 servlet,它应该回复 Json 中的请求{obj:XML} (意味着一个 Json 里面包含一个 xml 对象)。

XML 以 UTF-8 编码,并有几个字符,例如 => पोलैंड

XML 在 a 中org.w3c.dom.Document,我正在使用 JSON.org 库来解析 JSON。当我尝试在 上打印时ServletOutputStream,字符编码不正确。我已经测试过它试图在文件中打印响应,但编码不是 UTF-8。

Parser.printTheDom(documentFromInputStream,byteArrayOutputStream);
OutputStreamWriter oS=new OutputStreamWriter(servletOutputStream, "UTF-8");
oS.write((jsonCallBack+"("));
oS.write(byteArrayOutputStream);
oS.write(");");

我什至在本地(没有部署 servlet)上尝试过上一个和下一个代码:

oS.write("पोलैंड");

结果是一样的。

相反,当我尝试打印文档时,该文件是格式正确的 xml。

 oS.write((jsonCallBack+"("));
 Parser.printTheDom(documentFromInputStream,oS);
 oS.write(");");

有什么帮助吗?

4

1 回答 1

0

通常,如果二进制数据需要成为 xml 文档的一部分,则它是 base64 编码的。有关更多详细信息,请参阅此问题。我建议您对可以具有奇异 UTF-8 字符的字段进行 base64 编码,并在客户端对它们进行 base64 解码。

有关 java 中 base64 编码/解码的 2 个不错的选项,请参阅此问题

于 2012-01-12T16:32:41.093 回答