windows curl post 请求中文请求参数乱码

avatar 2021年11月17日23:16:32 0 92 views

今天遇到一个很神奇的问题,curl中文接受参数乱码,网上的人遇到的都是返回乱码,我这边是接受请求的接口参数收到的是乱码。

curl http://lyz:123456@localhost:15672/api/exchanges/%2F/exchange2/publish -X POST -H "Content-type:application/json;charset=utf-8" -d "{\"properties\": { \"delivery_mode\": 2 }, \"routing_key\": \"\",\"delivery_mode\": \"2\", \"payload\": \"{\\\"id\\\": \\\"中\\\"}\",\"payload_encoding\": \"string\"}" -i

但是我用我的mac系统或linux系统调用curl,在java项目里打断点,则能接收到中文的。windows却是乱码

 

原因是windows默认用的gbk编码,然后java项目获取输入流通过utf8编码,

GBK->UTF-8导致一些数据转换不了,会显示方块的乱码符号。

 

解决办法有2种

方法一、java代码里request获取GBK的输入流

示例如下:

    @PostMapping("/test")
    public String test(HttpServletRequest request) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(), "GBK"));
        String str = "";
        String wholeStr = "";
        while ((str = reader.readLine()) != null) {//一行一行的读取body体里面的内容;
            wholeStr += str;
        }
        return wholeStr;
    }

因为我是rabbitmq消费消息,获取不到request,所以解决不了我的问题

 

方法二、

修改windows的默认编码

在区域设置里,可以选用UTF-8编码

这个可以解决那个乱码问题,但是会带来一个新问题,很多其他软件文件乱码了

而且只有win10才有这个功能,很不推荐。

 

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0