tomcat之坑:指定jvm的编码

背景

在项目中需要调用 小程序开发提供的http api,在web端将数据写入小程序的云数据库,但是代码单元测试在idea上没问题。正常写入。但是将项目部署在tomcat上面发现写入数据失败,错误码 47001,即请求体解析失败,请求体的格式出错,于是怀疑是编码导致的问题
尝试过的方法
    PrintWriter out=new PrintWriter(connection.getOutputStream());
    JSONObject jsonObject=new JSONObject();
    jsonObject.put("env",yunId);
    jsonObject.put("query",query);
     //神奇操作
    String s=new String(jsonObject.toJSONString().getBytes("UTF-8"));
    out.write(s);
        connection.setRequestProperty("Accept-Charset","UTF-8");
        connection.setRequestProperty("Content-Type","application/json;charset=UTF-8");

和无数次的运行,运行,运行。。。。。。。

最终寻找解决办法的过程中无意看到 tomcat 指定 jvm的编码格式。豁然开朗,具体方法如下
  • 首先 在你的运行环境下查看你的 jvm编码格式

     	System.getProperty("file.encoding")
    
  • 根据实际项目的需要,修改catalina.bat文件配置

     	加入 :set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
    

注意你加入的位置:

goto doneEndorsed
:noEndorsedVar
if not exist "%CATALINA_HOME%\endorsed" goto doneEndorsed
set ENDORSED_PROP=java.endorsed.dirs
:doneEndorsed
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8

rem ----- Execute The Requested Command ---------------------------------------
自此更改完毕。一天的崩溃给了让我长了记性,编码很重要。在整个项目中的从运行环境到输入输出,字节到字符,等等的编码的方式一定要注意注意再注意。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值