文件1:formtest.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<% response.setCharacterEncoding("gb2312"); %>
<form action="form1.jsp" method="post">
<input type="text" name="chartest">
<input type="submit" name="提交" value="提交">
</form></body>
</html>
文件2:form1.jsp
<%@ page language="java" contentType="text/html; charset=GB2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%
String str=request.getParameter("chartest");
out.println("chartest值是:"+str+"<br>");
out.println("str的长度:"+str.length());
for(int i=0;i<str.length();i++){
out.println(Integer.toHexString((int)(str.charAt(i))));
}
%>
</body>
</html>
问题:
我以“中国”做为输入,可打印出来是:
chartest值是:???ú(这的乱码不知道在这显示的什么)
str的长度:4 d6 d0 b9 fa
这样的显示。
我就想不明白:编码的值正确,也是用GB2312解析的,可打印出来的怎么是乱码?
另外还有一个eclipse的问题:<%@ page language="java" contentType="text/html; charset=GB2312"%>
把这句去了,eclipse就不能保存,它默认是以iso-8859-1进行文件编码,怎么改一下?
先谢了!!!
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<% response.setCharacterEncoding("gb2312"); %>
<form action="form1.jsp" method="post">
<input type="text" name="chartest">
<input type="submit" name="提交" value="提交">
</form></body>
</html>
文件2:form1.jsp
<%@ page language="java" contentType="text/html; charset=GB2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%
String str=request.getParameter("chartest");
out.println("chartest值是:"+str+"<br>");
out.println("str的长度:"+str.length());
for(int i=0;i<str.length();i++){
out.println(Integer.toHexString((int)(str.charAt(i))));
}
%>
</body>
</html>
问题:
我以“中国”做为输入,可打印出来是:
chartest值是:???ú(这的乱码不知道在这显示的什么)
str的长度:4 d6 d0 b9 fa
这样的显示。
我就想不明白:编码的值正确,也是用GB2312解析的,可打印出来的怎么是乱码?
另外还有一个eclipse的问题:<%@ page language="java" contentType="text/html; charset=GB2312"%>
把这句去了,eclipse就不能保存,它默认是以iso-8859-1进行文件编码,怎么改一下?
先谢了!!!
解决方案 »
- jsp中div中嵌套include的问题,在线等~
- javaBean问题,着急啊。。不然以下的学习工作都无法开展拉。。帮下忙 谢谢大家!!!
- 讨论...如何通过程序把别人网站服务器的许多图片保存在自己的电脑....
- 为什么将tomcat4.0换成5.0后,同样将应用拷到webapp下却有异常,Help~~
- 需兼职jsp程序员 北京
- 【急】spring mvc freemarker问题
- 菜鸟问题:如何让从MSSQL库取出的日期是年-月-日??
- 简单配置问题:j2sdk-1_4_1_03+tomcat4.1.18+Oracle9i+Win2000 server如何配置?
- 用jbuilder做好jsp页面后,怎样生成可执行文件?
- 网站登录密码需要加密,请问怎么加密吗,大哥帮帮忙!
- 怎么做一个安全的登陆验证??
- 装了Tomcat 5.5.26,jsp文件应该放哪里??
楼主【craboy1】截止到2008-08-01 11:43:42的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=craboy1
这个再加一句
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb18030"%>
呵呵,你没有设置页面的编码格式,使用gb18030;gbk;gb2312都可以.
还是乱码,另外两句全加会出现错误。只加你那句也不好使,改了pageEncoding="gb2312"好不好使!
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here </title>
</head>
<body>
<%
String str=request.getParameter("chartest");
str=new String(str.getBytes("ISO8859-1"),"gb2312");
out.println("chartest值是:"+str+" <br>");
out.println("str的长度:"+str.length());
for(int i=0;i <str.length();i++){
out.println(Integer.toHexString((int)(str.charAt(i))));
}
%>
</body>
</html>
加上这句...
port="8888" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="设置字符级"/>
设置完之后如果还是不行的话不妨试试重启容器
加了这句str=new String(str.getBytes("ISO8859-1"),"gb2312");可以了。
最少也不应该使用str.getBytes("ISO8859-1"),"gb2312");这样太有点不灵活了,呵呵....
给你的建议海是去google一下过滤器的使用吧.
String str=request.getParameter("chartest");
这个段代码前加上
request.setCharacterEncoding("GB2312")
试试。
一般来说,由JavaBean向jsp页面传值不会出问题,jsp向jsp传值会出问题
如果页面不是很多,可以在页面使用request.setCharacterEncoding("GB2312") 肯定可以,然后在getParameter就可以了
如果你用Struts,一般都是action传递到jsp,不会出现乱码问题,可以试试
只要出现乱码,通过这段代码还解决不了的话pageEncoding="gb18030"用下面这个就一定行
str = new string(getBytes("iso8859-1"));
虽然只是一个页面传递,可是经过好几次转换
1 GB2312->2 ISO9985-1-> 3 unicode->4 GB2312
1是输入数据的<form>页面
2是使用getParameter方法的页面,所以WEB引擎会以默认的ISO8859-1解码。GB2312变成ISO9985-1只是在每个字节前加0,也可说是无损的,加一句new String(str.getBytes("ISO8859-1"),"gb2312")可以解决这个问题。
3JVM只支持unicode,所以处理的字符(中文或本地化的字符)会转化成unicode,
4最后转换成页面的能处理的代码GB2312