📄 jsp_dev.txt
字号:
【问题】
【乱码文件】
<%@ page contentType="text/html;charset=gb2312" %>
<!--%@ page pageEncoding = "gb2312" %-->
<%@ page language="java" %>
<html>
<head><title>表单处理</title></head>
<form name="frm" method="GET" action="formExample.jsp">
<table border=0>
<tr><td>用户名:</td><td><input type=text name="Tname"></td></tr>
<tr><td>密码:</td><td><input type=password name="Tpass"></td></tr>
<tr><td>性别:</td>
<td><input type=radio name="Tsex" value="男" checked>男
<input type=radio name="Tsex" value="女">女</td>
</tr>
<tr><td>爱好:</td>
<td><input type=checkbox name=Tch1 value="体育">体育
<input type=checkbox name=Tch2 value="美术">美术
<input type=checkbox name=Tch3 value="音乐">音乐</td>
</tr>
<tr><td>专业:</td><td><select name=Ty>
<option value="计算机">计算机</option>
<option value="文学">文学</option>
<option value="数学">数学</option>
</select>
<tr><td>留言:</td><td><textarea name=Tl rows=5 cols=20></textarea></td></tr>
<tr><td><input type=submit value="用户信息"></td></tr>
</table></form>
<!--% request.setCharacterEncoding( "gb2312" );%-->
<%
String Tname=request.getParameter("Tname");
//String Tpass=request.getParameter("Tpass");
String Tsex=request.getParameter("Tsex");
String Tlove1=request.getParameter("Tch1");
String Tlove2=request.getParameter("Tch2");
String Tlove3=request.getParameter("Tch3");
String Ty=request.getParameter("Ty");
String Tl=request.getParameter("Tl");
//String a=new String(Tname.getBytes( "ISO-8859-1"), "gb2312");
out.print("你的信息是:"+"<br>");
out.print("用户名"+Tname+"<br>");
out.print("密码"+Tname+"<br>");
out.print("性别"+Tsex+"<br>");
out.print("爱好"+Tlove1+Tlove2+Tlove3+"<br>");
out.print("专业"+Ty+"<br>");
out.print("留言"+Tl+"<br>");
%>
</html>
【最终解决方法】
编辑tomcat中的server.xml文件在下面两处添加URIEncoding="gb2312"
<Connector
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="gb2312"/>
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="gb2312"/>
【资料】:
【jsp中文乱码终极解决方法】
一 找出问题的根源
乱码可能出现的地方:1 jsp页面中
2 jsp页面之间相互传参的参数
3 与数据库中数据的存取
基本归纳为以上几种。
二 寻找解决方案
1 出现在jsp页面中,是由于没有设置jsp页面的中文字符编码。
2 出现在jsp页面之间相互传参,是由于参数没有设置正确的字符编码。
3 以上2个问题解决了,那么存到数据库中,自然就不存在乱码。除非你对存入到数据库里的数据再次进行编码。
三解决方法:
1的解决方法
<% @ page contentType = " text/html;charset=gb2312 " %>
加上这句解决jsp页面中的中文乱码显示,tomcat编译完后向客户端输出的html文件不是采
用中文编码,所以会导致乱码产生。
2的解决方法
2.1 <% request.setCharacterEncoding( " gb2312 " ); %>
加上这句解决jsp页面中的中文参数传递乱码。
因为浏览器默认使用的编码是“UTF-8”发送请求参数。
我们把它改为"gb2312"就ok了。
2.2 String(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");
这句的意思是,把传来的参数全部编码转换成gb2312,这样做的缺点是每次传来一个参数
都要这样写,很麻烦。
同样可通过设置server.xml配置文件来实现。
< Connector
port ="8080" maxHttpHeaderSize ="8192"
maxThreads ="150" minSpareThreads ="25" maxSpareThreads ="75"
enableLookups ="false" redirectPort ="8443" acceptCount ="100"
connectionTimeout ="20000" disableUploadTimeout ="true" URIEncoding ="gb2312" />
但是这样就应用到整个webapp中去了。
另: <% @page pageEncoding = " gb2312 " %>
此句是为了让jsp编译器能正确地解码含有中文字符的jsp页面。
其它方法还可以修改web.xml文件,配置一个过滤器。其原理都一样,只是换种方式而已。
有的书上专门写了一个函数来解决乱码,实际上对比一下就知道那种解决方法的好与坏。
回过头来一看,解决乱码也不过如此。
ok,实际就加上这3句搞定问题。
<% @page pageEncoding = " gb2312 " %>
<% @ page contentType = " text/html;charset=gb2312 " %>
<% request.setCharacterEncoding( " gb2312 " ); %>
【JSP中文乱码完整解决】
开发java应用出现乱码是很常见的,毕竟现在unicode的使用还不是很广泛,在使用gb2312(包含了gbk简体,big5繁体)的系统中要正确实现 中文的display和数据库的存储是最基本的要求。 ========================http://www.glgg.net/blog======================================= 1,首先developer要明确自己为什么会遇到乱码,遇到什么样的乱码(无意义的符号还是一串问号或者其它什么东西)。新手遇到一堆很乱的字符时通常不知所措,最直接的反映就是打开google搜索”java中文”(这个字符串在搜索引擎上的查询频率非常高), 然后一个一个的去看别人的解决方法。这样做没有错,但是很难达到目的,原因下面会提到。总之,出现乱码的原因是非常多的,解决的方法也完全不一样,要解决
====================http://www.babatu.com===================babatu@gmail.com================
开发java应用出现乱码是很常见的,毕竟现在unicode的使用还不是很广泛,在使用gb2312(包含了gbk简体,big5繁体)的系统中要正确实现
中文的display和数据库的存储是最基本的要求。
========================http://www.babatu.com=======================================
1,首先developer要明确自己为什么会遇到乱码,遇到什么样的乱码(无意义的符号还是一串问号或者其它什么东西)。
新手遇到一堆很乱的字符时通常不知所措,最直接的反映就是打开google搜索”java中文”(这个字符串在搜索引擎上的查询频率非常高),
然后一个一个的去看别人的解决方法。这样做没有错,但是很难达到目的,原因下面会提到。
总之,出现乱码的原因是非常多的,解决的方法也完全不一样,要解决问题必须先分析自己的”上下文环境”。
========================http://www.babatu.com=====================================
2,具体说来,需要哪些信息才能确定项目中的乱码的根源。
a,开发者所用的操作系统
b,j2ee容器的名称,版本
c,数据库的名称,版本(精确版本)以及jdbc驱动的版本
d,出现乱码的source code(比如是system out 出来的,还是jsp页面中的,如果是jsp中的,那么头部声明的情况也很重要)
=========================http://www.glgg.net/blog========================================
3,如何初步分析乱码出现的原因。
有了上述的信息,基本上就可以发帖求助了,相信放到javaworld等论坛上,很快就会有高手给你提出有效的解决方案的。
当然不能总靠发帖求助,也要试试自行解决问题。如何下手呢?
a,分析一下你的”乱码”到底是什么编码。这个其实不难,比如
System.out.println(testString);
这一段出现了乱码,那么不妨用穷举法猜测一下它的实际编码格式。
System.out.println(new String(testString.getBytes(”ISO-8859-1″),”gb2312″));
System.out.println(new String(testString.getBytes(”UTF8″),”gb2312″));
System.out.println(new String(testString.getBytes(”GB2312″),”gb2312″));
System.out.println(new String(testString.getBytes(”GBK”),”gb2312″));
System.out.println(new String(testString.getBytes(”BIG5″),”gb2312″));
等等,上述代码的意思是用制定的编码格式去读取testString这个”乱码”,并转换成gb2312(此处仅以中文为例)
然后你看哪一个转换出来的结果是ok的,那就。。。
b,如果用上面的步骤能得到正确的中文,说明你的数据肯定是在的,只不过是界面中没有正确显示而已。那么第二步就该纠正你的view部分了
,通常需要检查的是jsp中是否选择了正确的页面编码。
在此要声明被很多人误解的一点,那就是<%@ page contentType=”text/html; charset=GB2312″ %>指令和<META http-equiv=Content-Type
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -