请求第三方接口的时候,传输中文,对方接收到的中文是乱码

本文详细解析了在XML请求报文处理中遇到的中文乱码问题,尤其在Tomcat部署环境下更为显著。通过对比本地与服务器环境差异,指出在字符串转字节数组时未指定编码格式是导致乱码的根本原因,并提供了正确的处理方式,即在getBytes()方法中明确指定UTF-8编码。

请求报文:

<?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");
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值