springboot java微信支付统一下单接口body为中文,报【签名错误】/付款界面中文??? 的解决办法

本文根据此文章 微信统一下单接口body为中文,报【签名错误】的解决办法做修改,因为使用的是springboot,所以和他的解决方式不太一样:

问题源于:
生成预付款订单向微信发送xml中, xml含有中文,导致签名失败
搜索其他关于此问题的解决方式都是 转换编码之类,无济于事,顶多是将xml中的中文 转成???从而 成功生成预支付订单id,但是此时 , 你已经将含有???的符号传给微信,导致付款界面就都显示成了你之前转的???

查资料知: tomcat默认的编码方式不是utf-8
如果你的项目没有修改成utf-8就会导致问题的出现
springboot解决方法:
原来的项目启动方式: java -jar XXX.jar
指定编码启动: java -Dfile.encoding=UTF-8 -jar XXX.jar

查看项目的当前编码

String iso8859 = new String(xmlstring.getBytes("iso8859-1"));
        String gbk = new String(xmlstring.getBytes("gbk"));
        String utf8 = new String(xmlstring.getBytes("utf-8"));
        if(iso8859.equals(xmlstring)){
            logger.error("当前系统编码:-----------iso8859");
        }else  if(gbk.equals(xmlstring)){
            logger.error("当前系统编码:-----------gbk");
        }else  if(utf8.equals(xmlstring)){
            logger.error("当前系统编码:-----------utf8");
        }

猜你喜欢

转载自blog.csdn.net/gentlu/article/details/86626133