snowfox373 2007-11-24 11:21
解决JSP中使用request乱码问题
JSP显示中文有乱码怎么办,用request得到的用户输入的中文怎么是乱码,把汉字写到数据库怎么是乱码,等等一些关于汉字乱码的问题。其实这个问题很简单,管它汉字不汉字,还是日文,还是其他的什么双字节的语言,我们一律把它当作UTF-8看待。A#ziNV A(J"r3I
l'ce4o6iGEC(c
(一)request中的双字节文字
*K1bS$gT
{
faQ+]8|9q
我们来实现在整个应用程序中使用UTF-8编码工作,之所以选择UTF-8不仅仅之于上述原因,我们知道java的就是基于在UTF-8之上的,所以我们选择UTF-8应该没错
%]$s6a3E
sh
首先把我们的.java, .jsp文件都用UTF-8编码来保存,如果以前的没有用UTF-8保存也无所谓,但是建议以后写的都用UTF-8来保存。 Q$m%c&bd$t:}W,S
Gmk
k,Z;I}Dz
并在.jsp里面写:[code]<%@page contentType="text/html; charset=UTF-8"%>而不是%@page contentType="text/html; charset=UTF-8"%[/code]然后在web.xml添加下面一段:[code]<web-app>
B%s M:`6B2\
...
d8K0\H4|ya0j_0[r
<filter> gT7e"j0qI
<filter-name>Set Character Encoding</filter-name>
@
d{[Xmqc
@
<filter-class>com.redv.projects.eduadmin.util.filters.SetCharacterEncodingFilter</filter-class>
(e i/xNl]Fd&o)F
<init-param> 7HA&j)^0q*?S
<param-name>encoding</param-name> +^&T9F\{!{!A__
<param-value>UTF-8</param-value>
f$r(TD$U4l.E4S1jQ
</init-param>
b+Ur:_p5S/s?w
</filter> 2}+k:n)q8a?~
<filter-mapping> E6} z)J])_z
<filter-name>Set Character Encoding</filter-name> Hu;` {ya'h%k gq
<url-pattern>/*</url-pattern>
+\J$P]{y1~%_s"R
Gm}7CP&X o6Q9b
</filter-mapping> Rn)IH^U3X
... 2h%AiP;Cdt|
</web-app>[/code]其中com.redv.projects.eduadmin.util.filters.SetCharacterEncodingFilter的代码如下:[code]package com.redv.projects.eduadmin.util.filters; P7vo&Q'?
import java.io.IOException; )Y:}\1[.g!y,{
import javax.servlet.Filter; -j OK/F In Z1usl
import javax.servlet.FilterChain;
L;L(X"ty+]mn!l
import javax.servlet.FilterConfig; :@
W8Pe6|
import javax.servlet.ServletException; #cNU9|&`
import javax.servlet.ServletRequest;
#dyKh-Y0Bt] P
import javax.servlet.ServletResponse;
$g B1|6EY_.O
import javax.servlet.UnavailableException;