http通信get,post 中文乱码问题原因分析

转载请注明出处,谢谢!

以前写过一些解决中文乱码的博客。但是以前只给了解决方案,并没有分析原因。

今天来分析一下乱码的原因:

1.通过浏览器给后台提交数据的时候,默认使用的是ISO-8859-1提交的

所以在Servlet中收到中文数据时要做编码转换。

把字符串按照iso-8859-1转换为字节,然后把字节转换为utf-8

name = new String(name.getVBytes("iso-8859-1","utf-8"));[如果没有这个,控制台可以输出正确中文,但是响应界面还是会乱码(Servlet界面)]

同时需要设置返回接收的文本类型(响应头的文本类型)response.setContentType("text/html;charset=utf-8")

get请求

中文数据

浏览器会对编码做转换,转换为服务器可识别的编码

所以客户端app通过get请求给服务端发送数据时需要对中文做转码操作

URLEncoder.encode(string,"utf-8")

post请求就不需要这一步转码操作了{这个跟Android系统有关,android系统默认按照utf-8编码发送数据,而get方式是通过url发数据的}

时间: 2024-09-28 07:23:42

http通信get,post 中文乱码问题原因分析的相关文章

mysql保存中文乱码的原因和解决办法

当你遇到这个mysql保存中文乱码问题的时候,期待找到mysql保存中文乱码的原因和解决办法这样一篇能解决问题的文章是多么激动人心. 也许30%的程序员会选择自己百度,结果发现网友已经贴了很多类似mysql 中文乱码.php mysql 中文乱码.mysql5.5中文乱码.mysql 乱码.mysql乱码问题.mysql jsp 乱码.mysql jdbc 乱码.mysql 查询乱码.mysql 导入数据乱码等一系列问题,到底哪个是自己要找的能解决自己问题的呀?15%的程序员一看就懵了,剩下15

android 通信中的中文乱码问题

1.要解决中文乱码问题,首先得了解什么是字符编码 计算机要处理各种字符,就需要将字符和二进制内码对应起来,这种对应关系就是字符编码.要制定字符编码首先要确定字符集,并将 字符集内的字符排序,然后和二进制数字对应起来,根据字符集内字符的多少,确定几个字节来编码. 2.常用的字符编码 ASCII 编码是目前计算机中常用的最广泛地 字符集及其编码.ISO-8859-1可以表示的是西欧语言,看起来很单一,但是由于是单字节编码,与计算机最基础的表示单位一致,所以在很多时候,仍旧使用ISO-8859-1编码

Base64解码中文部分中文乱码的原因

参考这篇博客 http://blog.sina.com.cn/s/blog_4eb5ae750101cq16.html 需要做的就是 filename=filename.replace(" ", "+"); filename=filename.replace("\n", ""); 将空格替换成"+", 将所有的\n换行符去掉.

tomcat 下jsp乱码的原因分析

tomcat 下jsp乱码 我们先看一个例子(包含2个文件一个test.jsp , 和result.jsp): test.jsp <%@ page language="java" isThreadSafe="true" pageEncoding="utf8" %> <%@ page contentType="text/html; charset=gbk"%> <html> <head&

[oracle]解决centos 7下oracle的中文乱码问题

首先在形成中文乱码的原因是由于字符集不统一导致的,不同的字符集在转换的过程中必然要出现乱码,当然不排除可以转换.所以要解决中文乱码问题,思路是将输入.存储.显示等流程中涉及到字符集都统一为一种,对于oracle首先必须满足的先决条件是要服务端和客户段的字符集统一,若还不能解决问题,同时还要将系统的字符集与之统一,甚至导入或输入数据所使用的字符集统一. 看了网上的一些资料后,都说修改服务器的字符集风险比较大,确实,测试开发用还好说,假若是上线项目的服务器,那修改服务器字符集所带来的后果是不堪的,废

Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)

文章来源:http://blog.csdn.net/brave_heart_lxl/article/details/7186631 以下是dbzhang关于qt中文乱码问题原因的阐述,觉得不错: 首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString. 很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四

PHP函数imagefttext( )因--enable-gd-jis-conv引发中文乱码解决方案

阐述 最近几天与公司的PHP开发人员测试即将上线的WEB站点(致难忘的青春岁月:http://hd.gfan.com),在内网测试环境没有任何问题,但在线上测试时,发现通过PHP的GD函数 imagefttext()引用FreeType字体将文本信息写入图像时,出现中文乱码:对此问题,我们在整个排查过程中,总结了三个能引起中文乱码的原因,如下: 1.Linux系统字符集是否支持中文? [email protected]:~#locale LANG=en_US.UTF-8 LANGUAGE=en_

关于windows下程序开发的中文乱码问题小结

笔者遇到的问题背景: windows 下使用notepad++6.7 ,ftp连接远程ubuntu主机,在本地创建远程主机文件,编辑后上传出现中文乱码. 笔者最开始不明白问题出在哪,因为设置了在notepad++中默认使用UTF-8编码格式进行新建文件,但依旧无效. 笔者一步步探索问题: 新建一个文件,写入纯英文html文本后上传至ubuntu主机,vi :set fileencoding显示此时为utf-8编码 上述文件新增几个中文,保存后上传至ubuntu主机,这个时候提示fileencod

详解get请求和post请求参数中文乱码的解决办法

首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解决办法 对于get请求解决中文乱码有两种途径一种是修改tomcat默认的编码方式为"UTF-8" 在tomcat的server.xml里把 <Connector connectionTimeout="50000" port="8080" pro