关于使用HttpClient获取接口返回数据中中文乱码问题

最近使用老系统copy的功能方法中,获取到的返回json中,发现loginname,srcname,等名字字段的属性,很明显有乱码,如:"%E5%A4%A7%E6%96%B0%E5%8D%8E%E4%BC%9A%E5%B1%95"

等字段,

通过json转换成对象之后,发现涉及到中文字段的,哪怕提前设置了UTF-8格式,返回结果依然会是乱码,

先通过如下方式进行解决

看代码:

HttpClient hc = new HttpClient();
PostMethod pm = new PostMethod(getHttpUrl(request,platformAuthUrl));
hc.getParams().setContentCharset("UTF-8");
pm.setParameter("ticket", ticket);
hc.executeMethod(pm);
String in=pm.getResponseBodyAsString();

返回结果中,包含:

{dataControlList:"0101%211%211",delegationList:"",departAB:"HMIC",deptId:1,deptName:"%E5%A4%A7%E6%96%B0%E5%8D%8E%E4%BC%9A%E5%B1%95",deptNo:"0101",excludeCorpList:"",id:100,loginName:"admin",platformCallbackUrl:"http%3A%2F%2Fplatform%2Fnoright.jsp",roles:"171",srcDeptId:1,srcDeptNo:"0101",srcId:100,srcLoginName:"admin",srcUserName:"%28T%29%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98",srcUserNo:"100",superAdmin:true,systemId:10017,userAB:"AD",userNo:"100",userdataControlList:"",username:"%28T%29%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98"}

通过对%E5%A4%A7%E6%96%B0%E5%8D%8E%E4%BC%9A%E5%B1%95进行解析

public class testString {

    public static void main(String[] args) throws UnsupportedEncodingException {
        String ss = "%E5%A4%A7%E6%96%B0%E5%8D%8E%E4%BC%9A%E5%B1%95";

        String s1 = URLDecoder.decode(ss,"UTF-8");
        System.out.println(s1);

        String s3 = "0101%211%211";
        System.out.println(URLDecoder.decode(s3,"UTF-8"));

        String s4 = "%28T%29%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98";
        System.out.println(URLDecoder.decode(s4,"UTF-8"));


    }
}

通过URLDecoder.decode(ss,"UTF-8");

发现可以获取中文,完美解决

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值