呵呵。这种情况我也遇到过。只有一种情况会这样。就是在动态生成链接时。你必须保证参数是纯中文
如:“参数 1”
不能是“参数+1”这类参数中间是空格就是空格。在服务器端处理时用ISO-8859-1转换。其它的都没有问题。
还有STRUTS中的<HTML:LINK>标签不要用.尽量使用<a href="<bean:write name="..." />">
如:“参数 1”
不能是“参数+1”这类参数中间是空格就是空格。在服务器端处理时用ISO-8859-1转换。其它的都没有问题。
还有STRUTS中的<HTML:LINK>标签不要用.尽量使用<a href="<bean:write name="..." />">
http://www-900.ibm.com/developerWorks/cn/java/jsp_dbcsz/index.shtml如果通过 get/post 方式从 browser 返回的参数值中包含汉字信息, servlet 将无法得到正确的值。SUN的 J2SDK 中,HttpUtils.parseName 在解析参数时根本没有考虑 browser 的语言设置,而是将得到的值按 byte 方式解析。这是网上讨论得最多的 encoding 问题。因为这是设计缺陷,只能以 bin 方式重新解析得到的字符串;或者以 hack HttpUtils 类的方式解决。参考文章 2 均有介绍,不过最好将其中的中文 encoding GB2312、 CP1381 都改为 GBK,否则遇到 GBK 汉字时,还是会有问题。
Servlet API 2.3 提供一个新的函数 HttpServeletRequest.setCharacterEncoding 用于在调用 request.getParameter(“param_name”) 前指定应用程序希望的 encoding,这将有助于彻底解决这个问题。
下面是一个提交页面(submit.jsp),代码如下:
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head> <body>
<form name="form1" method="post" action="process.jsp">
<div align="center">
<input type="text" name="name">
<input type="submit" name="Submit" value="Submit">
</div>
</form>
</body>
</html>
下面是处理页面(process.jsp)代码:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head> <body>
<%=request.getParameter("name")%>
</body>
</html>
如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%
request.setCharacterEncoding("gb2312");
%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head> <body>
<%=request.getParameter("name")%>
</body>
</html>
其他几位大哥说的中文处理问题,我已经使用一个Filter,在Filter中加入request.setCharacterEncoding("gb2312"),在从request中取时中文是没有问题的。希望那位大哥能告诉我<HTML:LINK>标签到底有什么问题,该如何才能用,等待中...........