zoukankan      html  css  js  c++  java
  • java 代码模拟客户端进行POST请求服务器出现中文乱码问题

    今天在做项目的时候遇到一个问题。我用java模拟了一个客户端进行请求,在本机进行模拟的时候,后台收到的中文是没有乱码的。将项目打包发布到服务器上的时候。出现了中文乱码问题。我第一反应是客户端的编码格式不对,于是我做了以下修改

    try {
    name1 = new String(name.getBytes("GBK"),"utf-8");
    } catch (UnsupportedEncodingException e2) {
    // TODO Auto-generated catch block
    e2.printStackTrace();
    }
    结果还是出现了乱码,这时候我联想到第二点,我在模拟请求的时候加上了
    try {
    URL uri1 = new URL(CHEACK_WITHOUT_ID_IMG);
    HttpURLConnection conn = (HttpURLConnection)uri1.openConnection();
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.getOutputStream().write(prams.getBytes());

    上面这几句。首先设置了提交方式,在设置了一些参数
    "application/x-www-form-urlencoded;charset=utf-8"
    但是结果依然让人摸不着头脑,还是字符集出了错,于是我还是在服务器端排查,终于找到了原因,我把参数 prams 传入的时候是写入了流。但是流没有进行编码,在经过tomcat的post重编码之后导致了我post出去的参数prams里面的中文全部乱码了。于是加上这句conn.getOutputStream().write(prams.getBytes("utf-8"));

    conn.getOutputStream().write(prams.getBytes("utf-8"));
    中文乱码问题完美解决。
    ————————————————
    版权声明:本文为CSDN博主「咸蛋超人有动感光波」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u011016389/article/details/80989709

  • 相关阅读:
    06. 如何去掉数组中的重复性数据
    01. 作用域和值类型引用类型的传递
    韩昊 20190919-5 代码规范,结对
    韩昊 20190919-6 四则运算试题生成,结对
    韩昊 20190919-2 功能测试
    韩昊20190912-1 每周例行报告
    将py文件打包为exe文件方法
    关于四个定义的理解
    韩昊 20190912-2 命令行
    韩昊 20190905-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/roak/p/15257186.html
Copyright © 2011-2022 走看看