
参考——》JSP和Servlet的中文乱码处理 - 无处不在 - 博客频道 - CSDNNET
超链接时出现乱码(低版本浏览器不行IE6)
在Web开发中,挺多的时候都是通过超链接去传递中文参数的,这也会导致在显示的时候也会出现乱码,对于超链接来说,它实际上是向服务器端发送了一个请求,而它发出的请求是属于get请求,所以对于超链接的乱码来说,它处理乱码的方式和表单的get请求出现乱码的方式是一样的。
客户端的get请求
对于不同的请求方式,解决乱码的问题也是不一样的,对于客户端的get请求来说,服务器端处理要想不出现乱码,解决这个问题稍微复杂一些,需要用到String类型的构造函数,其中的一个构造函数就是用指定的编码方式去解码,一般都用“UTF-8”的方式。只要在服务器端将请求得到的参数重新构造成一个字符串就行了。如下所示:
String stuname = requestgetParameter("stuname");
String str = new String(stunamegetBytes("ISO-8859-1"),"utf-8")
经过构造之后,客户端输入中文,且表单时get请求的情况下,str就变成了中文了。如果请求参数比较多,最好将它封装成一个工具类:
public class MyUtil
{
public static String getNewString(String str) throws UnsupportedEncodingException
{
return new String(strgetBytes("ISO-8859-1"),"UTF-8");
}
}
String stuname= MyUtilgetNewString(requestgetParameter("stuname"));
url传中文应当尽量避免这么做因为会乱码当然如果你所有所有的地方编码都统一的话就没用问题但是很难的建议所有地方都用utf-8
你可以
String name = new String(requestgetParameter("groupTitle")getBytes("ISO8859_1"),"你页面的编码方式");试下
之所以乱码因为经过了tomcattomcat的默认编码方式是ISO8859_1所以需要转换一下tomcat的编码方式也可以设置这个在tomcat的conf目录下的serverxml里面
转码可以在页面中或是sevlet以及过滤都可以解决的,下面以页面和servlet为例:
方法一:设置
request
和
response
的编码
[
页面编码必须为
u8
]
requestsetCharacterEncoding("UTF-8");//传值编码
responsesetContentType("text/html;charset=UTF-8");//设置传输编码
方法二:
String
str1=传来的数据。
String
ss=new
String(str1getBytes("ISO-8859-1"),"utf-8");
//转码UTF8
jsp提交数据有两种方式,一种是post,一种是get,两种不同的提交方式对中文的处理也不同。
post提交方式只需在servlet中设置好requestsetCharacterEncoding("编码集"); 注:编码集按照您的需求写,可以是UTF-8,也可以是GBK或GB2312
get提交方式则需要转码,因为tomcat服务器编码集为ISO8859-1,需要手动转码,下方代码是我个人编写的一个工具类,希望对你有帮助!另外jsp传递中文如果用get提交方式,在前台对中文也要
public static String returnNewString(String oldString){String newString="";
try {
newString = new String(oldStringgetBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
eprintStackTrace();
}
return newString;
}如既有可能有post提交方式,也有可能有get提交方式,可以采用修改tomcat的serverxml文件,或采用过滤器,修改serverxml文件方式为:<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol=">
在jsp中,如果在url中传递中文时会出现乱码,其实解决方法非常简单: 第一步:编码(以传递的参数为str为例) 在传递数据前将str进行编码JavanetURLEncoderencode(str) 第二步:解码 在获取数据端将得到的数据进行解码 new String(strgetBytes("ISO8859_1"))
简单示例程序如下:
<%@ page contentType="text/html;charset=gb2312" %
<a href="dsjspurl=<%=javanetURLEncoderencode("编码的是这里","GB2312")%"点击这里</a<%//requestsetCharacterEncoding("GBK");
if(requestgetParameter("url")!=null){str=requestgetParameter("url");
//下面是解码
str=javanetURLDecoderdecode(str,"GB2312");
你需要保持jsp页面和Servlet类中的编码一致。
jsp页面:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta >
1通过浏览器调用JSP页面,在客户端浏览器中所有的中文内容出现乱码;解决方案:替换ISO-8859-1,修改页面编码为UTF-8,ujiuye
3通过浏览器调用Servlet,Servlet在浏览器中显示内容出现乱码;解决方案:在Servlet使用response在输出内容之前,先执行response
5提交页面表单元素给对应的JSP页面或者Servelt后,接收方出现表单数据中文值乱码;解决方案:在接收POST提交的参数之前,使用requestsetCharacterEncoding(“UTF-8")设定接收参数的内容使用UTF-8编码 ,
7用Get方式传递参数,中文字符会出现乱码; 解决方案:Get提交默认是以ISO88591传递,如果容器没有做配置修改,程序则需要手工进行编码转换
以上就是关于jsp页面中a标签传值到Servlet中 中文变成乱码了 是怎么回事 编码全是UTF-8全部的内容,包括:jsp页面中a标签传值到Servlet中 中文变成乱码了 是怎么回事 编码全是UTF-8、jsp 页面间 传参 中文 乱码 问题、jsp传递中文参数出现乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)