在jsp传递参数过程中,最后获得的中文字符总是乱码,
问该如何解决啊。
示例中是index1.jsp的输入数据,传递到index2.jsp时,将出现中文乱码。index1.jsp<%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%><html>
<head>
<title>POS</title>
</head>
<body>
<form name="frm1">
<input type="input" name="sss" value="" />
<input type="button" value="submit" onclick="confirm();" />
</form>
</body>
</html>
<script language="javascript">
function confirm()
{
var value = document.frm1.sss.value;
alert("-----------" + value);
var url="index2.jsp?val="+value;
document.location.href=url;
}
</script>index2.jsp<%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%><html>
<head>
<title>POS2</title>
</head>
<body>
Value---<%=request.getParameter("val")%>
</body>
</html>
问该如何解决啊。
示例中是index1.jsp的输入数据,传递到index2.jsp时,将出现中文乱码。index1.jsp<%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%><html>
<head>
<title>POS</title>
</head>
<body>
<form name="frm1">
<input type="input" name="sss" value="" />
<input type="button" value="submit" onclick="confirm();" />
</form>
</body>
</html>
<script language="javascript">
function confirm()
{
var value = document.frm1.sss.value;
alert("-----------" + value);
var url="index2.jsp?val="+value;
document.location.href=url;
}
</script>index2.jsp<%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%><html>
<head>
<title>POS2</title>
</head>
<body>
Value---<%=request.getParameter("val")%>
</body>
</html>
request.setCharacterEncoding("gbk");
1)打开tomcat的server.xml文件,找到区块,加入如下一行URIEncoding="GBK",具体的代码如下:
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> 2)重启tomcat,一切OK
改成UTF-8
但是,我程序是在Weblogic中发布的,改怎么处理呢?
应该注意保持编码一致,如果用gb2312,就全部用gb2312;gbk亦一样。
个人比较喜欢将这一句放在第二行
如果用utf-8不会造成乱码的话,推荐全部用utf-8。
用Tomcat6.0的话不需要修改,以前用Tomcat5.5时更改过可以解决问题。
但是不太推荐更改虽然解决了当前的问题,但在某些地方仍会造成乱码,具体哪里不太记得。
改用Tomcat6.0后只需要注意jsp页面的编码就不会出现问题。
<%@ page contentType="text/html; charset=GB2312" pageEncoding="UTF-8"%>
但是我看解决的方法,是修改Tomcat容器的server.xml文件,
所以我想问在weblogic下发布,该怎么修改?
我感觉这样说的,大家都不清晰啊。
谢谢了,哈哈~
tomcat也改成是UTF-8了呀 不知道为什么 试了加上request.setCharacterEncoding("UTF-8");
还是不行 不知道为什么
我想问的是在weblogic下的发布,乱码问题。
在Tomcat中的修改server.xml的方法已经可行了,
那么在weblogic中,做如何修改呢?
~晕~
* 乱码处理情况一:(提交中文):
* 方法1,页面端发出的数据作一次encodeURI,服务器段使用new String(old.getBytes("iso8859-1"),"UTF-8");
* 方法2,页面端发出的数据作两次encodeURI,服务器段使用URLDecoder.decode(old,"UTF-8")
* 乱码处理情况一:(返回中文)
* 在servlet,action中设置流编码:response.setCharacterEncoding("GBK");
提交请求前加上response.setCharacterEncoding("GBK");
如果不是采用POST提交的方式,如连接传值方式,Tomcat 的内不会将其转换为ISO-8859-1
所以要转换可用String str= new String(request.getParameter("XXX").getBytes("ISO-8859-1"),"GBK");
有机会可以试试!!!
<head>
<title>POS2</title>
</head>
<body>
<%request.setCharactorEncoding("gb2312");%>
Value---<%=request.getParameter("val")%>
</body>
</html>
request.setCharacterEncoding("gbk"); 加在打印方法之前
上面的方法果然有用。
但是我在jsp页面的一开始就已经设定
<%@ page contentType="text/html; charset=GB2312" pageEncoding="gb2312"%>那这句话是干什么的呢,不是编码格式吗?
然后再b.jsp中对=request.getParameter("val")进行decode.decode代码如下://这里需要进行异常控制,就不一一描述了
java.net.URLDecoder.decode(request.getParameter("val"),"gbk");
<%
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
%>