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

  • 相关阅读:
    LeetCode "Super Ugly Number" !
    LeetCode "Count of Smaller Number After Self"
    LeetCode "Binary Tree Vertical Order"
    LeetCode "Sparse Matrix Multiplication"
    LeetCode "Minimum Height Tree" !!
    HackerRank "The Indian Job"
    HackerRank "Poisonous Plants"
    HackerRank "Kundu and Tree" !!
    LeetCode "Best Time to Buy and Sell Stock with Cooldown" !
    HackerRank "AND xor OR"
  • 原文地址:https://www.cnblogs.com/roak/p/15257186.html
Copyright © 2011-2022 走看看