A. 怎么解决jsp中文乱码问题,我要疯了
1、JSP页面出现的中英文乱码:
我们的PageCharset.jsp页面代码如下所示:
[html]view plain
<%@pagelanguage="java"import="java.util.*"%>
<html>
<head>
<title>中文显示示例</title>
</head>
<body>
中文显示的示例。
<%
out.print("这里是用jsp输出的中文");
%>
</body>
</html>
当我们在保存我们的文件的时候会出现下面的提示:
整因为在我们的MyEclipse中默认的编码为ISO-8859-1,而ISO-8859-1不支持中文的编码,所以jsp页面代码如果出现中文就不能保存了。对于这样的错误,我们只要在页面上加上支持中文的编码格式就可以了,在jsp页面中加上pageEncoding=“gb2132” 支持中页面的编码格式就可以了。这样我们就能正常保存我们的jsp源文件了。
2、URL传递参数中文乱码
[html]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
<html>
<head>
<title>URL传递参数中英文处理示例</title>
</head>
<%
Stringparam=request.getParameter("param");
%>
<body>
<ahref="URLCharset.jsp?param='中文'">请单击这个链接</a>
您提交的这个参数为:<%=param%>
</body>
</html>
启动tomcat运行结果出现url传递的中文乱码:
这里我们需要配置tomcat服务器文件,才能解决这个问题。具体方法是,在tomcat的conf目录下找到server.xml配置文件,找到如下代码
[html]view plain
<spanstyle="font-size:18px"><Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/></span>
在后面添加上编码方式,URIEncoding="gb2312" 重新启动tomcat问题就解决了。
3、表单提交中问乱码
对于表单中提交的数据,可以用request.getPraramter("");方法来获取,但是当表单中出现中文数据的时候就会出现乱码。
我们的提交表单的页面,FormCharset.jsp页面如下:
[html]view plain
<%@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Form中文处理示例</title>
</head>
<body>
下面是表单内容:
<formaction="AcceptFormCharset.jsp"method="post">
用户名:<inputtype="text"name="userName"size="10"/>
<inputtype="submit"value="提交"/>
</form>
</body>
</html>
我们的AcceptFormCharset.jsp页面:
[html]view plain
<%@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Form中文处理示例</title>
</head>
<body>
下面是表单提交以后request取到的表单的数据:<br>
<%
out.println("表单输入的userName值为:"+request.getParameter("userName")+"<br>");
out.println("表单输入的pasword值为:"+request.getParameter("password")+"<br>");
%>
</body>
</html>
提交表单:
结果如下:
我们看到我们在表单中的中文数据出现了乱码,为什么楚翔这种情况呢?是因为我们的tomcat中,对于以post方式提交的表单编码格式默认为ISO-8859-1的编码格式,而这种编码格式是不能编码中文的,所以就会出现乱码的现象了。对于这种情况,我们可以对表单中的数据进行处理,在取得表单参数的时候设置编码方式,我们更改了我们的接受表单数据的页面如下所示:
[html]view plain
<%
StringuserName=request.getParameter("userName");
StringpassWord=request.getParameter("password");
out.println("表单输入的userName值为:"+newString(userName.getBytes("ISO-8859-1"),"gb2312")+"<br>");
out.println("表单输入的pasword值为:"+newString(passWord.getBytes("ISO-8859-1"),"gb2312")+"<br>");
%>
这样就得到我们想要的效果啦:
4、数据库操作中文乱码
我们在建立数据库的时候,最好是能选择支持中文编码格式,最好是能和jsp页面编码格式保持一致,这样就尽可能的减少数据库操作中文乱码的问题,最开始的连接数据库的时候,编写好数据库的编码策略,也就是使用这种形式的URL:jdbc:Oracle:thin:@localhost:1521:TEST;userEnicode=true;characterEncoding=gb2312; 这样我们选择的数据库的编码和我们的jsp编码就一致了。
写入到数据库的时候,数据库中中文乱码:
但是如果我们在最开始的时候没有对数据库的编码进行设置,并且我们的数据库中已经有大量的数据的话,我们再向数据库中写入中文数据,数据库中的中文显示为乱码。在写入数据的时候出现乱码,是因为我们在处理表单的时候没有对字符的编码设置,对于这种情况,我们在jsp中或servlet中加入:
rquest.setCharacterEncoding("gb2312");//处理表单请求的时候设置编码。
这样再看我们的数据库,插入的中文字段就不会乱码了。
从数据库中读出中文乱码:
数据库中的中文出现乱码,就是在读取数据库的时候进行转码,这样显示就不会乱码了。我们整理这样的一个转码函数:
public String encoder(String str) throws UnsupportedEncodingException
{
String result = new String(str.getBytes("ISO-ISO-8859-1)"),"gb2312");
}
5 在myeclipse开发工具中打开中文显示乱码
在myeclipse中默认的编码方式为ISO-8859-1,所以打开有其他编译器编码的jsp页面就会出现乱码,是因为两个编译器保存源文件编码格式不同,在UltralEdit可以支持中文,但是在Eclipse对jsp文件的保存方式为ISO-8895-1,这种编码不支持中文,所以就会出现乱码。
对于这种情况,我们可以更改myeclipse默认的编码方案,myeclipse->Window->Preferences->General->Content types->Test->JSP
这样问题就解决啦!
6 Filter批量设置编码格式
我们对于每一个jsp或servlet我们都要设置编码格式,效率有些低,我们的servlet的Filter解决了我们的问题。在前篇写过Filter的解决中文乱码问题的文章,在这里就不赘述了。http://blog.csdn.NET/lovesummerforever/article/details/9924413
需要强调的一点,开始使用Javamodel1模型的时候,我们在web.xml中配置只需要配置好jsp页面就可以了,在model2模型中我们使用servlet作为控制器,我们就需要在Filter的配置文件web.xml中配置好servlet的设置,对所有的servlet处理的表单编码进行设置。
[html]view plain
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
B. jsp 页面传递数据出现中文乱码
你用记事本打开queryadmin.jsp,看它的编码是什么,如果是ansi,就会出现乱码。改成utf-8后,将文件另存为同名文件即可。如果是utf-8则无视。应该是这个原因
C. JSP文本框输入中文提交后会乱码,寻求帮助
在JSP页面的第一行<%page ...%>里面添加如下属性:
pageEncoding="utf-8" contentType="text/html;charset=utf-8"
这样就可以保证页面显示和传递的编码都为utf-8,后台再设置request.setCharacterEncoding("utf-8"),这样从页面提取出来的中文就应该不会乱码了
D. jsp页面<a>标签传中文参数到struts后台乱码该怎么解决
java文件读取的时候有中文就很出现乱码,通常获取到的文件中都是“iso8859-1”格式,需要转换为“UTF-8”格式。
如:String str = new String(str.getByte("iso8859-1"),"UTF-8");进行下强制转换后在进行读取即可。
备注:通常格式有GBK、UTf-8、iso8859-1、GB2312,如果上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。
E. jsp页面中a标签传值到Servlet中 中文变成乱码了 是怎么回事 编码全是UTF-8
参考——》JSP和Servlet的中文乱码处理
-
无处不在
-
博客频道
-
CSDN.NET
超链接时出现乱码(低版本浏览器不行IE6)
在Web开发中,挺多的时候都是通过超链接去传递中文参数的,这也会导致在显示的时候也会出现乱码,对于超链接来说,它实际上是向服务器端发送了一个请求,而它发出的请求是属于get请求,所以对于超链接的乱码来说,它处理乱码的方式和表单的get请求出现乱码的方式是一样的。
客户端的get请求
对于不同的请求方式,解决乱码的问题也是不一样的,对于客户端的get请求来说,服务器端处理要想不出现乱码,解决这个问题稍微复杂一些,需要用到String类型的构造函数,其中的一个构造函数就是用指定的编码方式去解码,一般都用“UTF-8”的方式。只要在服务器端将请求得到的参数重新构造成一个字符串就行了。如下所示:
String
stuname
=
request.getParameter("stuname");
String
str
=
new
String(stuname.getBytes("ISO-8859-1"),"utf-8")
经过构造之后,客户端输入中文,且表单时get请求的情况下,str就变成了中文了。如果请求参数比较多,最好将它封装成一个工具类:
public
class
MyUtil
{
public
static
String
getNewString(String
str)
throws
UnsupportedEncodingException
{
return
new
String(str.getBytes("ISO-8859-1"),"UTF-8");
}
}
String
stuname=
MyUtil.getNewString(request.getParameter("stuname"));
F. 在jsp页面向后台servlet传值时 如图name指为中文时 后台接收到的数据是乱码的 该怎么解决这个乱码问题
在servlet中进行编码就可以了。
request.setCharacterEncode("utf-8");//或者GBK
String name = request.getParameter("name");
G. jsp怎么解决中文乱码的问题
1.通过浏览器调用JSP页面,在客户端浏览器中所有的中文内容出现乱码;解决方案:替换ISO-8859-1,修改页面编码为UTF-8,ujiuye
3.通过浏览器调用Servlet,Servlet在浏览器中显示内容出现乱码;解决方案:在Servlet使用response在输出内容之前,先执行response....
5.提交页面表单元素给对应的JSP页面或者Servelt后,接收方出现表单数据中文值乱码;解决方案:在接收POST提交的参数之前,使用request.setCharacterEncoding(“UTF-8")设定接收参数的内容使用UTF-8编码 ,
7用Get方式传递参数,中文字符会出现乱码; 解决方案:Get提交默认是以ISO88591传递,如果容器没有做配置修改,程序则需要手工进行编码转换