jsp的中文乱码问题的解决 ^!*g:Tn$k
由于JSP是在运行时,由WEB容器进行动态编译的,如果我们没有指定JSP源文件的编码格式,则JSP编译器会获得服务器操作系统的file.encoding值来对JSP文件编译的,它在移植时最容易出问题。如在中文win2k中可以很好运行的jsp文件拿到英文linux中就不行,尽管客户端都是一样的。 那是因为容器在编译JSP文件时获取的操作系统的编码不同造成的(在中文wink中的file.encoding和在英文Linux中file.encoding是不同的,且英文Linux的file.encoding对中文不支持,所以编译出来的JSP类就会有问题)。网络上讨论的大多数是此类问题,多是因为JSP文件移植平台时不能正确显示的问题,对于这类问题,我们了解了JAVA中程序编码转换的原理,解决起来就容易多了。我们建议的解决办法如下: 1、我们要保证JSP向客户端输出时是采用中文编码方式输出的,即无论如何我们首先在我们的JSP源代编中加入以下一行: = Owdw?
<%@page contentType="text/html; charset=gb2312"%> ~4+s6
2、为了让JSP能正确获得传入的参数,我们在JSP源文件头加入下面一句: d~c }r
<%request.setCharacterEncoding("GB2312");%> y4n/SH^
3、为了让JSP编译器能正确地解码我们的含有中文字符的JSP文件,我们需要在JSP源文件中指定我们的JSP源文件的编码格式,具体来说,我们在JSP源文件头上加入下面的一句即可: BKfa6l,
<%@page pageEncoding="GB2312"%>或<%@page pageEncoding="GBK"%> czqc8a?
这是JSP规范2.0新增加的指令。 我们建议使用此方法来解JSP文件中的中文问题,下面的代码是一个正确做法的JSP文件的测试程序: _~0mOkFO
//testchinese.jsp 5S`3;X%
<%@page pageEncoding="GB2312"%> ,$!PK/
<%@page contentType="text/html; charset=gb2312"%> yAU; Im
<%request.setCharacterEncoding("GB2312");%> xLb2wW
<% 5d &J% a
String action = request.getParameter("ACTION"); J= #w!
String name = ""; @,@\Xby
String str = ""; Mkhn`Wa08
if(action!=null && action.equals("SENT")) Ef19O[#
{ JuBL>k4M
name = request.getParameter("name"); ;K p#0'
str = request.getParameter("str"); $#~^KYhiB
} 9!UYwG \
%> 9BE7Z-O
<html> |(p*'#6/
<head> -7<nC@0F
J/m];3T}W
<Script language="JavaScript"> tj35sy,
function Submit() [li{07FF$
{ TPoT]91.
document.base.action = "?ACTION=SENT&str=传入的中文"; YUK}6qF
document.base.method = "POST"; A2(Z;v-
document.base.submit(); lXnG5 ;!m*
} l] :MNs]Zb
</Script> G$Ol_~:L>
</head> jRw)sn|
<body bgcolor="#FFFFFF" text="#000000" topmargin="5"> E>?o$`
提交 YW1"J!2
<% WzN%F.i
if(action!=null && action.equals("SENT")) Q1JcX{ I
{ =53Iz7"a
out.println("你输入的字符为:"+name); {qBwf
out.println("你通过URL传入的字符为:"+str); iiaF:l%Rvq
} {Hg&m bt
%> PrcB9 $]
</body> j Mh; UE0
</html>
查看本文来源