| bea workshop studio(原nitrox m7)确实是个好东西,但是我再使用它的jsp编辑器打开含有utf-8的中文jsp页面时其中的中文是乱码,而且你修改有乱码的页面后,再用别的编辑器打开发现原来正常的中文也都变成乱码了。 为了解决问题我在google和baidu的搜索了好久没有找到方法,于是我到m7的论坛(http://forums.m7.com/forum/index.php)看看有没有解决方法。 终于我找到这样一个记录http://forums.m7.com/forum/viewtopic.php?t=463&start=0&postdays=0&postorder=asc&highlight=encoding 其中m7 support给出的解释是这样的:
NitroX?looks?for?a?meta?tag?to?determin?the?charset?that?should?be?used?to?encode?the?page?file.?The?page?directive?is?usually?used?to?determin?the?charset?used?by?the?server?to?serve?the?page?to?the?browser.?These?2?are?not?the?same?(for?good?reasons).?

So,?try?something?like:?
<meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8"?/>?

M7?Support 所以可以知道,workshop的jsp编辑器在打开jsp页面时首先是从meta的标签中读取页面的编码的。 于是,我先用其它的编辑器(我用的是dw8)打开有问题的jsp页面,然后在其中添加meta标签
<%@?page?language="java"?pageEncoding="UTF-8"%>
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
<html>
??<head>
????<title>下部框架页</title>
????<meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8"?>?
????<meta?http-equiv="pragma"?content="no-cache">
????<meta?http-equiv="cache-control"?content="no-cache">
????<meta?http-equiv="expires"?content="0">
。。。。。。。。。。 然后再用workshop的编辑器打开,发现中文显示正常了,本以为这样问题就结束了 但是当我修改另外一个页面后,用workshop打开发现依然是乱码
<%@?page?language="java"?pageEncoding="UTF-8"%>
<%@?page?import="jbc.util.WebHelper"?%>
<%@?include?file="resource.jsp"%>


<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
<html:html?lang="true">
??<head>
??
????<html:base?/>???
????
????<title>desktop.jsp</title>
????<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?>?
????<meta?http-equiv="pragma"?content="no-cache">
????<meta?http-equiv="cache-control"?content="no-cache">
????<meta?http-equiv="expires"?content="0">????
。。。。。。。。。。。。 这与前一个页面的不同之处在于增加了struts标签,我在反复测试后发现把<html:base />这个标签删除后中文就正常了,但是<html:base />这个标签是必须的,于是我把<html:base />这个标签放置在meta后面
<%@?page?language="java"?pageEncoding="UTF-8"%>
<%@?page?import="jbc.util.WebHelper"?%>
<%@?include?file="resource.jsp"%>


<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
<html:html?lang="true">
??<head>
????<title>desktop.jsp</title>
????<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?>?
????<meta?http-equiv="pragma"?content="no-cache">
????<meta?http-equiv="cache-control"?content="no-cache">
????<meta?http-equiv="expires"?content="0">????
????<meta?http-equiv="keywords"?content="keyword1,keyword2,keyword3">
????<meta?http-equiv="description"?content="This?is?my?page">
????<common:validate/>
????<html:base?/>
??</head> 而且经过测试我发现,不仅仅是struts标签,在meta前面加入任何标签都将导致页面的中文乱码。 因此我认为workshop的jsp editer在打开文件时首先要读取jsp页面的meta标签以确定编码,如果没有指定字符集的meta标签或者在该meta标签前增加其它方法标签将会导致编辑器读取编码不正常,而使得编辑器以默认的gb2312字符集打开文件导致乱码 总结workshop(原nitrox m7)的utf-8中文乱码问题的解决步骤应该是: 1、首先确定项目的编码是uft-8,这样保证默认的jsp页面属性是utf-8 2、在jsp页面中添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >,注意如果已经含有中文并且是乱码就必须先要用其它可以正常显示的编辑器打开添加后并保存 3、当发现打开依然是乱码时就要检查是不是在<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >前还有什么需要逻辑处理的标签影响的workshop对jsp页面的读取。
这个问题花费了我两个礼拜的时间希望我的方法能够给同样和我一样在为这个问题烦恼的朋友有所帮助

rocket 2006-04-12 10:52
|