⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsp_dev.txt

📁 本人根据自己的开发经验总结的jsp开发过程中的一些中文乱码问题及解决方法。
💻 TXT
📖 第 1 页 / 共 3 页
字号:
【问题】
                            【乱码文件】
<%@ 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 + -