eclipse里jsp页面编译为Servlet中文变为乱码的问题
乱码问题,eclipse里jsp页面上的中文,在编译过后的相应java文件里全变成了乱码,就是页面上的中文,要怎么设置才能在编译成Servlet时不产生乱码啊!多谢各位,麻烦再讲一下。
虽然在page中指定了是 gb2312 可是只是偶尔能正常显示中文,大多时候都是乱码啊!!!
就是加上<%@ page contentType="text/html; charset=GB2312" %>也不行,为什么啊,现在页面上从数据库读出来的数据可以正常显示中文(中文插入数据库时,进行了转换),但页面总是不正常,有时第一次显示正常,可刷新一下就变成乱码了,我的平台是tomcat5.0+JDK1.4.05+Eclipse3.0.1(emf2.0.1+lomboz.301+tomcatPluginV3)环境下,什么问题造成这种现象啊!怎么解决?
问题点数:20、回复次数:23Top
1 楼supperman_009(天堂草)回复于 2005-03-28 12:31:03 得分 0
<tr>
<td width="50%">人员学历:</td>
<td width="50%"><select size="1" name="xl">
<option value="大专">大专</option>
<option value="本科">本科</option>
</select></td>
</tr>
<tr>
<td width="50%">人员性别:</td>
<td width="50%"><select size="1" name="xb">
<option value="男">男</option>
<option value="女">女</option>
</select></td>
</tr>
<tr>
很严重的是,这部分被编译成了下面这样,老是说有非法字符啊!!!
out.write(" <tr>\r\n");
out.write(" <td width=\"50%\">浜哄憳瀛﹀巻锛�</td>\r\n");
out.write(" <td width=\"50%\"><select size=\"1\" name=\"xl\">\r\n");
out.write(" <option value=\"澶т笓\">澶т笓</option>\r\n");
out.write(" <option value=\"鏈\">鏈</option>\r\n");
out.write(" </select></td>\r\n");
out.write(" </tr>\r\n");
out.write(" <tr>\r\n");
out.write(" <td width=\"50%\">浜哄憳鎬у埆锛�</td>\r\n");
out.write(" <td width=\"50%\"><select size=\"1\" name=\"xb\">\r\n");
out.write(" <option value=\"鐢穃">鐢�</option>\r\n");
out.write(" <option value=\"濂砛">濂�</option>\r\n");
out.write(" </select></td>\r\n");
out.write(" </tr>\r\n");Top
2 楼supperman_009(天堂草)回复于 2005-03-28 12:44:37 得分 0
语法检查直接报错,IE也报错说是倒数第4、5、6行引入非法字符‘)’。应该是中文乱码造成的,怎么解决啊!!eclipse的编辑字符集是GBK,JSP页面里也加了<%@ page contentType="text/html; charset=GB2312" %>,可就是不正常啊。
编译后生成的Servlet的java文件里可以看到:
response.setContentType("text/html; charset=GB2312");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
到底是什么问题啊!高手请指教。我把eclipse的编辑字符集换成gb2312也不行,快崩溃了。Top
3 楼supperman_009(天堂草)回复于 2005-03-29 11:31:36 得分 0
没人理我?Top
4 楼anson2003(老蒋)回复于 2005-03-29 13:23:00 得分 5
你是页面里有中文后,再加上page属性得吧?我建议先加page属性再在页面里输入中文,肯定不会是乱码!Top
5 楼supperman_009(天堂草)回复于 2005-03-29 17:25:49 得分 0
不是啊,我是在每页的一开始加的page属性啊!
浏览器浏览没有问题,这个问体出在Eclipse里,由.jsp运行转换成.java的severlet时,sevrlet里出现乱码,有时会影响运行,有时不会,上面就是现象,很郁闷,用了很多方法,.java里还是乱麻。有办法解决马?Top
6 楼foxty(狐狸糊涂)回复于 2005-03-29 18:15:27 得分 0
request.setCharacterEncoding("GB2312");Top
7 楼jdk150(砸破玻璃上火车&举块砖头闹革命)回复于 2005-03-29 19:47:17 得分 0
可能是jsp文件本身的编码问题,你把jsp文件用其他文本编辑器(带有可以选择编码类型的那种)打开,再保存的时候选择默认的编码类型(或者bg2312,不记得了,可以都试试看)Top
8 楼shaoyadong(呼呼)回复于 2005-03-29 21:58:38 得分 0
我觉得你应该把你的JSP里面的中文都要改成ASCII码,试试!!不一定对哦..Top
9 楼anson2003(老蒋)回复于 2005-03-31 12:10:27 得分 10
你把那个JSP删调!重新用eclipse建一个测试的jsp,先不要在JSP中输中文,你先把头部的page加好,我记得eclipse会空出一行专门让你写头部字符编码的,等你写好了之后,然后加上<%out.print("测试");%>看输出的是不是中文!Top
10 楼shadow7788(小小)回复于 2005-03-31 12:22:46 得分 0
你的IE是几点几啊???是不是IE6。0啊???
你用System.out.println();
打印看一下
还有你JSP是用的gb2312吗?Top
11 楼supperman_009(天堂草)回复于 2005-04-05 22:22:46 得分 0
我的IE是6.0的,可以确定
我用另一种方法解决了,编译好的文件的“#65533”这样的东西,可以在*.jsp运行之前,在汉字的前后加些空格,或者把双引号改成单引号就好了,关键是能消除其出现转义字符型乱码,或者控制字符型乱码,编译之后生成的中间文件*.java里面虽然是乱码,但是不影响IE的正常浏览,可以正常输出中文了,但是仅仅是可以,还是不很正常。Top
12 楼supperman_009(天堂草)回复于 2005-04-05 22:23:53 得分 0
现在的问题是,在tomcat5.0+JDK1.4.05+Eclipse3.0.1(emf2.0.1+lomboz.301+tomcatPluginV3)+WINXP(SP2)+IE6.0 环境下,每次第一次启动Eclipse,直到更改*.jsp并保存,不论怎么重启服务或IE,浏览的都是乱码,要到更改某一页jsp的源码后,或者删除work目录下生成的*.java中间文件为止,才会使某一页,或者全部的页的中文正常显示。运行中也发现这个问题,第一次编译生成*.java时,肯定是正常的,但是有时刷新几下,也就是开始直接读取编译好的文件吧,就会出现乱码的情况。
哪位高手能指点一下,本人也在努力找到根源,现正在win2000sever和redhat linunx 9.0下建立相同平台进行问题追查。大家一起摆平它啊!乱码问题
哦,有一点,Eclipse下,work目录下的severlet文件中中文是乱码,但是为什么编辑器的页签中也有一个severlet相应的版本却是正常中文的?就是编辑jsp页面时,编辑窗口下方可以看见的那个severlet的页筐里。
看看这里,有详细的
http://community.csdn.net/Expert/topic/3887/3887387.xmlTop
13 楼anson2003(老蒋)回复于 2005-04-06 12:19:49 得分 5
请不要用Eclipse先,用记事本,请你在${CATALINA_HOME}/webapp/ROOT下加入下面文件(a.jsp):
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
测试
</title>
</head>
<body>
<table border="1">
<tr>
<td width="50%">人员学历:</td>
<td width="50%"><select size="1" name="xl">
<option value="大专">大专</option>
<option value="本科">本科</option>
</select></td>
</tr>
<tr>
<td width="50%">人员性别:</td>
<td width="50%"><select size="1" name="xb">
<option value="男">男</option>
<option value="女">女</option>
</select></td>
</tr>
</table>
</body>
</html>
上面的代码直接拷到记事本上然后保存到${CATALINA_HOME}/webapp/ROOT下,
然后访问http://localhost:8080/a.jsp,看是不是显示乱码!!!!
如果是乱码,请换TOMCAT的版本!!!Top
14 楼anson2003(老蒋)回复于 2005-04-06 12:21:29 得分 0
还有!你所谓的有时候不正常显示是什么时候?这些中文是从数据库取出来 的那些有时不正常?
还是本来静态的中文也有时不正常?Top
15 楼chenliang2m(风)回复于 2005-04-06 12:44:47 得分 0
<%request.setCharacterEncoding("GBK");%>
这句应该好使的
是servlet的功能的呢!
加在页首第一行
可能要配一下 tomcat的servlet.jar的路径到classpath 里
Top
16 楼supperman_009(天堂草)回复于 2005-04-06 22:48:19 得分 0
回复人: anson2003(老蒋) ( ) 信誉:100 2005-04-06 12:21:00 得分: 0
还有!你所谓的有时候不正常显示是什么时候?这些中文是从数据库取出来 的那些有时不正常?
还是本来静态的中文也有时不正常?
-------------------------------------------
谢谢大侠,我指的不正常是静态文本的,从数据库读出的数据一直是正常的,显示没有问题,就是静态页乱码时,都是正常的。数据库中的中文存入之前我按照网上的高手做法,用字符码转换函数转换成ISO8891那个码了,读出时始终是正常的。
向上第三层的方法我这就去试试
Top
17 楼supperman_009(天堂草)回复于 2005-04-06 22:53:21 得分 0
哦,补充一下,我说的有时不正常通常是在,(未对JSP页面进行任何更改,每次重新准备做工程的时候)第一次启动编译器,直接运行服务,用IE看,绝对是乱码,但是如果对每一页都进行一下修改,就是激活一下保存选项,即使什么都没有改动,页面都会正常一次Top
18 楼minisun2000(红色枫叶)回复于 2005-04-07 08:49:26 得分 0
开头加个<%@ page pageEncoding="GBK" %>试试
Top
19 楼llp1217(风少)回复于 2005-04-07 09:07:41 得分 0
eclipse里面有个编码设置选项,试试看Top
20 楼yuxuefenfei(蓝色)回复于 2005-04-07 09:25:06 得分 0
http://blog.csdn.net/lvyuanfang/archive/2005/02/03/279498.aspxTop
21 楼supperman_009(天堂草)回复于 2005-04-08 10:42:54 得分 0
回复人: anson2003(老蒋) ( ) 信誉:100
..............
上面的代码直接拷到记事本上然后保存到${CATALINA_HOME}/webapp/ROOT下,
然后访问http://localhost:8080/a.jsp,看是不是显示乱码!!!!
如果是乱码,请换TOMCAT的版本!!!
--------------------------------------------------------------------------------------
我按照你说的做了,一切正常,一个乱码都没有,看来不是TOMCAT的问题,我的版本是5.0.28和5.0.30都试了,都正常。就是一放到Eclipse里就出问题,乱码不断,而且5.0.28和ECLIPSE结合的不好,ECLIPSE的控制台都得不到任何信息,也无法启动tomcat在Eclipse下。
Top
22 楼supperman_009(天堂草)回复于 2005-04-09 19:56:32 得分 0
重装了两个系统终于知道是怎么回事了,LINUX下一切正常,只要加了那两句话。windows下是不能让系统太烦忙,原来是在自己的笔记本上同时启动TOMCATE和SQL SEVER,所以有时就是乱码。
如果使用外部SQL SEVER,一切就正常了Top
23 楼supperman_009(天堂草)回复于 2005-04-11 10:33:41 得分 0
不是不能同时用服务,可以用,但是不能同时在一台机器上即跑SQL SEVER 又跑TOMCATE.我的笔记本就是这样,我把SQL SEVER服务器,移到别的机器上,就在也没有出现过乱码.想可能是机器性能不足造成的.
由于乱码产生的条件不确定,所以乱码问题很难搞定,昨天只出现了两次乱码,像是随机的,很奇怪,时而正常,时而不正常的,最麻犯了.无从下手,还请高手执教.
本人怀疑浏览器问题,也使用了FireFox 1.0中文增强版,结果有喜有忧:IE是第一次正常,以后错误.它是第一次乱码就次次乱码,第一次正常,就次次正常,而且其中有一页显示数据库查询结果的(数据以表格显示出来),不论怎么弄,静态文本都是乱码,动态文本一切正常.实在奇怪.Top




