Java HttpClient Post请求发送数据乱码

        描述:Web 客户端,利用 HttpClient 调用银行接口,银行的要求是:以 GBK 格式发送报文。

        情况:本地不管怎样调整编码格式,银行端接收到的中文总是处于乱码状态(英文和数字不乱码)。


        经过大量的资料查询,找到一些比较有用的资料。比如:这里

        由于调用银行接口,对于 IP 地址有限制,故本机并没有办法直接调用,必须要发送到服务器上才能正确调用。

        由于银行要求以 GBK 发送报文,所以新开了一个 Eclipse ,将 WEB 工程的所有文件编码都更改成 GBK 。

      

		System.getProperties().list(System.out);   
		
		
		String csn =  Charset.defaultCharset().name();
		System.out.println("默认编码格式 = " + csn); 

        利用以上代码,本地运行时控制台输出:默认编码格式 = GBK。说明了本地 JDK 默认编码格式为 GBK。

        由于不能在本机调试银行接口,当发送到服务器(linux)之后,日志输出“默认编码格式 = UTF-8”,说明服务器 JDK 默认编码格式为 UTF-8.

        在代码中对 HttpClient 的编码各种设置都没有效果后,想着是否是 JDK 默认编码格式造成的问题。

        由于是 Web 工程,当 Tomcat 启动时候,可以对 JDK 进行参数的设置,于是找到了下面的代码:

       

set JAVA_TOOL_OPTIONS=-Dfile.encoding=GBK -Duser.language=en -Duser.country=US


JAVA_OPTS="-server -Dfile.encoding=GBK -Duser.language=en -Duser.country=US" 

         Windows 下,修改  $TOMCAT_HOME/bin/catalina.bat 文件,添加第一行的代码。

       

        Linux 下,修改 $TOMCAT_HOME/bin/catalina.sh 文件,添加第二行代码。

      


       添加完成上述代码后,启动 Tomcat 时,JDK 默认编码已经被更改成 GBK,当再次访问银行接口时,中文报文传送正确,银行接受乱码问题解决。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值