java.lang.IllegalArgumentException: !hex:1小记微信对账单过程bug解决

微信支付开发文档

本地存储交易记录与微信交易记录进行对比,参数处理过程:

                        String newStr = returnMsg.replaceAll(",", " "); // 去空格
		        String[] tempStr = newStr.split("`"); // 数据分组
		        String[] t = tempStr[0].split(" ");// 分组标题  
		        int k = 1; // 纪录数组下标
		        int j = tempStr.length / t.length; // 计算循环次数
		        for (int i = 0; i < j; i++) {
		        	SortedMap<String,String> mapStr = new TreeMap<String,String>();
		        	WeixinBillDown wechatBills = new WeixinBillDown();
		            for (int l = 0; l < t.length; l++) {
		                /*********************** 我添加的开始 ***********************/
		                //如果是最后列且是最后一行数据时,去除数据里的汉字
		                if((i == j - 1) && (l == t.length -1)){
		                    String reg = "[\u4e00-\u9fa5]";//汉字的正则表达式
		                    Pattern pat = Pattern.compile(reg);  
		                    Matcher mat=pat.matcher(tempStr[l + k]); 
		                    String repickStr = mat.replaceAll("");
		                    System.out.println(t[l] + ":" + repickStr);//最后一个数据进行保存数据
		                }else{
		                    System.out.println(t[l] + ":" + tempStr[l + k]);
		                    mapStr.put(t[l], tempStr[l + k]);
		                }
		                /*********************** 我添加的结束 ***********************/
		            }
		            //调用接口发送数据,写数据库
		        
		            System.out.println("---------");// 摘取数据存入数据库
		            k = k + t.length;
		        }

这个参数对应有点多,需要一一对应,最终实现自动对比账单的功能;

在实现过程中遇见一个以前没有见过的问题:

java.lang.IllegalArgumentException: !hex:1

最终确认是参数的问题,将参数进行整理对比之后,确认是参数中多余了%,这个百分号在http请求的过程中会在解析URL过程中歧义,所以解决办法就来了,一种是在传递过程中直接用其他指定的符号进行代替,在保存数据库时再转回来,第二种是直接传一个%的对应码,他的对应码是%25;这样就解决了这个问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值