HTTP请求中文等出现乱码解决方案

/**
     *
     * @Description: http://xxx/m/studyguidenotesbackup/bookContent.json?token=xxx&bookContent=xxx&bookContentID=xxx
     * @param userToken
     * @param sermonId
     * @param sermonContent
     * @return
     * @author: J
     * @date: 2015-9-19
     * @version: TODO
     */
    public static SermonNoteBackupResultVO uploadSermonToBackendServer(String userToken, String sermonId, String sermonContent) {
        String uploadSermonToBackendServerURLPath = ConstantUtil.DOMAIN + "/m/studyguidenotesbackup/bookContent.json";
        HttpPost postUploadSermonBackup = new HttpPost();
        HttpClient clientUploadSermonBackup = new DefaultHttpClient();
        BufferedReader reader = null;
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        SermonNoteBackupResultVO sermonNoteBackupResultVO = null;

        try {
            postUploadSermonBackup.setURI(new URI(uploadSermonToBackendServerURLPath));
            params.add(new BasicNameValuePair("token", userToken));
            params.add(new BasicNameValuePair("bookContent", sermonContent));
            params.add(new BasicNameValuePair("bookContentID", sermonId));

            postUploadSermonBackup.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
            postUploadSermonBackup.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
            HttpResponse response = clientUploadSermonBackup.execute(postUploadSermonBackup);

            reader = new BufferedReader(new InputStreamReader(response
                    .getEntity().getContent()));

            StringBuffer strBuffer = new StringBuffer("");
            String line = null;
            while ((line = reader.readLine()) != null) {
                strBuffer.append(line);
            }

            sermonNoteBackupResultVO = GsonParse.getObjResult(strBuffer.toString(), SermonNoteBackupResultVO.class);
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (reader != null) {
                try {
                    reader.close();
                    reader = null;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return sermonNoteBackupResultVO;
    }

以上代码是我修改过的代码,不会出现乱码了,下面和大家分享下解决这个问题的心得体会。

问题描述:因为项目初期一直是支持英文的,所以这块也没考虑过中文或者其他国家的文字会出现乱码的情况,不巧遇到一个越南客户,越南文出现了乱码。

排查问题,客户端和服务器端都已经设置了UTF-8的编码模式,但是服务器端收到的Android端的备份文件还是乱码,但是IOS端确是正常的,有点迷茫之下开始查找解决方案。

Android和ios同时打印Http请求的头部,发现问题所在:

Andorid  :  content-type:application/x-www-form-urlencoded;
IOS  :  content-type:application/x-www-form-urlencoded; charset=utf-8;

OK.找到问题解决之即可。

在Android客户端Post请求的时候加上:postUploadSermonBackup.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");

时间: 2024-10-09 20:57:06

HTTP请求中文等出现乱码解决方案的相关文章

jquery 或ajax返回的中文数据总是乱码解决方案

要将Servlet中的 response.setContentType("text/html;charset=utf-8")这行代码放在 PrintWriter out = response.getWriter()之前. jquery 或ajax返回的中文数据总是乱码解决方案,布布扣,bubuko.com

Mac下eclipse导入其他工程中文注释出现乱码解决方案

因为用的是mac版的eclipse,导入其他工程注释出现乱码的情况,找了网上的很多方法,大部分都是说的workspace,在这里修改,但是我修改之后还是乱码,最后发现这样一个方法,才得以解决. 点击 偏好设置 -> General ->Text ->Java Source File  在下面的defalt encoding修改成  GBK,点击update 这样就解决了中文注释出现乱码的问题.

URL请求中文、符号“乱码”(解码、转码)解决方式

有的字符在url中传递的时候回编码(可能是自动的)将其符号转变为%加上ASCII码:如果在客户端或者服务端接收到的时候没有解码就会出现类似乱码的问题:其实不然只是没有进行解码 附部分编码规则 十六进制值 1. + URL 中+号表示空格 %2B 2. 空格 URL中的空格可以用+号或者编码 %20 3. / 分隔目录和子目录 %2F 4. ? 分隔实际的 URL 和参数 %3F 5. % 指定特殊字符 %25 6. # 表示书签 %23 7. & URL 中指定的参数间的分隔符 %26 8. =

R语言:读入txt文件中文文本出现乱码解决方案

下载安装 readr 因为使用内置函数 read.table() 读入应该是格式不符合要求会报错 1 library(readr) 2 help(package="readr") 可以使用里面的 read_table(),下面来检测一下 1 library(dplyr) 2 read.table('E:\\forpython\\chapters\\chap1.txt') %>% head() 3 read_table('E:\\forpython\\chapters\\chap1

SpringMVC如何解决POST请求中文乱码问题,GET的又如何处理呢?

在web.xml中 <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <pa

cygwin 乱码解决方案

右键选择Options... 左栏选项选择Text,右栏Character set 选择GBK,Locale选择zh_CN 选择OK,乱码成功变中文. cygwin 乱码解决方案

SpringMVC Ajax请求时返回json中文字符串的乱码问题的解决方案

1.org.springframework.http.converter.StringHttpMessageConverter类是处理请求或相应字符串的类,并且默认字符集为ISO-8859-1,所以在当返回json中有中文时会出现乱码. 2.StringHttpMessageConverter的父类里有个List<MediaType> supportedMediaTypes属性,用来存放StringHttpMessageConverter支持需特殊处理的MediaType类型,如果需处理的Me

项目中get/post请求中文乱码的解决方案

一.解决get请求中文乱码的方案: 方案(推荐)1: 一般情况下tomcat(8之前)服务器的编码默认是ISO8859-1,所以要对get请求提交的参数进行重新编码: String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8"); 方案(不推荐)2: 既然知道了tomcat服务器的编码默认是ISO8859-1,那么可以修改to

LoadRunner接口HTTP请求中中文乱码解决方案

今天项目经理要求压一下实时代扣接口性能.那就开始写脚本,脚本写好调试发现接口请求参数姓名输入中文乱码.接着就网上找资料解决该问题. 1:想法:将中文转成UTF-8,lr_convert_string_encoding 定义:字符编码System locale, Unicode, UTF-8之间的相互转换,转换结果保存在"结果字符串"中,该"结果字符串"包含NULL–字符串结束符 函数形式: lr_convert_string_encoding(const char