jsp中request接收中文参数乱码问题解决办法

在利用表单提交数据时发现,获得的中文参数会发生乱码,解决方法如下:

<body>
	<%
		String s=request.getParameter("uname");
		s = new String(s.getBytes("ISO-8859-1"),"utf-8");//解决乱码问题
	%>
	<%=s %>
</body>

s = new String(s.getBytes("ISO-8859-1"),"utf-8");此程序的作用是将接收到的的参数先转化为字节码文件,然后进行utf-8编码。

防止中文乱码的总结:

1、对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以。

2、正确设置JSP的pageEncoding="UTF-8"

3、在所有的JSP/Servlet中设置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8"),从而间接实现对浏览器编码的设置。

4、对于非表单提交的get或url请求,可以修改Tomcat的默认配置,推荐将useBodyEncodingForURI参数设置为true,也可以将URIEncoding参数设置为 UTF-8(有可能影响其他应用,所以不推荐)。或者用下面的方法,在接收数据时处理:

request.getParameter("userID"),得到userID的值

request.getParameter("userID").trim()将这个值去掉两边的空格

request.getParameter("userID").trim().getBytes("ISO-8859-1"))将这个String用ISO-8859-1编码成一个字节数祖

new   String(request.getParameter("userID").trim().getBytes("ISO-8859-1"),"utf-8")将刚才的字节数祖传进string的构造函数按照"utf-8"编码创建一个string对象。

5.使用URLEncoder的方法

传参前用:

//使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式

String username_encoder = URLEncoder.encode(username,"UTF-8");

接参数后显示用:

//使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码

String username_decoder = URLDecoder.decode(request.getParameter("username"),"UTF-8");

时间: 2024-10-14 09:59:50

jsp中request接收中文参数乱码问题解决办法的相关文章

http中 get方法 传送中文参数乱码解决办法

http传送参数有两种方法:get 和post  当时使用get方法传递中文参数是会有乱码现象 解决办法: 1.在jsp压面url后面的参数使用 encodeURI:"&zxbghy="+ encodeURI(zxbghy) 2.在后台java获取参数时使用字节数组:temphgdmhy = new String(hgdmhy.getBytes("ISO-8859-1"), "UTF-8");  案例,用get方法传递两个中文参数:zxb

数据库中文显示乱码问题解决办法

Ubuntu 14.04    mysql 5.5  python 2.7 从网页爬取数据存入数据库显示乱码 以root权限登录 修改mysql配置文件 /etc/init.d/my.cnf 找到[client]在下面加入 default-character-set=utf8 找到 [mysqld_safe]在下面加入 default-character-set=utf8 找到[mysqld]在下面加入 default-character-set=utf8 init_connect='SET N

jsp中request.getParameter()中文乱码问题解决

关于使用request.getParameter()得到中文乱码的问题,在网上查找了一天终于找到了一个解决方案,是一个比较笨的方法,要在每个使用request.getParameter()的地方添加如下代码,代码如下: 1 String name=request.getParameter("name"); 2 if(name!=null){ 3 name=new String(name.getBytes("ISO8859_1"),"utf-8")

【thrift】vc中使用thrift中文字符串乱码问题解决

问题描述: VC中使用Apache thrift时,如果字符串中包含中文,会出现乱码问题,这个问题的原因是由于thrift为了达到跨语言交互而使用了UTF-8格式发送字符串,这点对java或者C#不会造成影响,但是在VC中UTF-8却很成问题.VC中的string编码随项目编码一般是multibytes或者unicode,虽然倡导使用unicode,但实际上使用multibytes多字节开发仍然广泛存在,下面的解决方案主要解决的是多字节下的乱码问题. 解决方案 1.手动转换 第一种解决方案就是在

jsp中Get方式请求参数乱码的两种解决方式

第一种方式: <% //获取请求包含的下旬字符串 String rawQueryStr=request.getQueryString(); //使用URLDecoder解码祖父穿 String queryStr=URLDecoder.decode(rawQueryStr, "UTF-8"); //以&符号分解查询字符串 String paramPairs[]=queryStr.split("&"); for(String paramPair:p

jsp中URL传递中文参数的处理

在页面的url中使用encodeURI(encodeURI(中文)),对中文进行编码,并在服务器的java程序中使用URLDecoder.decode(中文, "UTF-8")进行解码即可; 如果url中需要传递+.#.?等特殊符号,可以使用encodeURIComponent(encodeURIComponent(中文)),服务器解码方法跟encodeURI的解码相同.

jupyter画图中文显示乱码问题解决办法

下定决心好好修炼一下可视化能力,却发现自己电脑上jupyter notebook画图显示中文字符会显示为小方格,网上查找了好多方法,虽然每位分享者都写着亲测有效,但是叶子姐姐亲测无效,伤心.... 大海捞针式检索各大神方法,终于一不小心成功了,记录一下,以备下一台电脑又出现此问题!!! 1.anaconda加载中文字体库 将C:\Windows\Fonts\SimHei.ttf复制到anaconda安装路径\Lib\site-packages\matplotlib\mpl-data\fonts\

mysql,用存储过程插入中文导致乱码问题解决办法

DELIMITER $$ USE `u2_test10`$$ DROP PROCEDURE IF EXISTS `Pro_apply`$$ CREATE DEFINER=`root`@`%` PROCEDURE `Pro_apply`(IN aid INT,IN uid INT,IN reas CHAR(50) CHARACTER SET utf8)//char(50) 这只urf-8BEGIN DECLARE score INT; SELECT COUNT(*) INTO score FROM

java url中文参数乱码问题

http://www.blogjava.net/jerry-zhaoj/archive/2009/07/16/286993.html 转 JAVA 中URL链接中文参数乱码的处理方法JAVA 中URL链接中文参数乱码的处理方法 JAVA 中URL链接中文参数乱码的处理方法 在url中问参数乱码,我们已经在 "解决ajax提交中文.URL中文参数传递后的乱码问题的解决办法" 一张提出了一中解决办法, 网子是:http://www.javaly.cn/javahome/java/conte