请求报文:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<HEAD>
<Demo>202009100bXT3KRx</Demo>
</HEAD>
<BODY>
<page>1</page>
<rows>200</rows>
<code></code>
<company>阿里巴巴</company>
</BODY>
</ROOT>
故障场景:这样的报文经过加密之后传给对方,对方接收到加密信息,在解密的时候发现请求报文的中文变成乱码了,而且最最坑爹的是我本地IDE跑没问题,部署到tomcat才有问题
String str =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<ROOT>\n" +
"<HEAD>\n" +
"<Demo>202009100bXT3KRx</Demo>\n" +
"</HEAD>\n" +
"<BODY>\n" +
"<page>1</page>\n" +
"<rows>200</rows>\n" +
"<code></code>\n" +
"<company>阿里巴巴</company>\n" +
"</BODY>\n" +
"</ROOT>";
try {
//这边getBytes()要指定编码,不然对方接受中文会出现乱码
byte[] encData2 = str.getBytes();
} catch (Exception e) {
e.printStackTrace();
}
最后发现我在加密前将字符串转换成字节数组的时候没有指定编码格式,最后改成这样就行了:
byte[] encData2 = str.getBytes("UTF-8");
本文详细解析了在XML请求报文处理中遇到的中文乱码问题,尤其在Tomcat部署环境下更为显著。通过对比本地与服务器环境差异,指出在字符串转字节数组时未指定编码格式是导致乱码的根本原因,并提供了正确的处理方式,即在getBytes()方法中明确指定UTF-8编码。
6250

被折叠的 条评论
为什么被折叠?



