关于workshop(原nitrox m7)的utf-8中文乱码问题解决

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标签

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打开发现依然是乱码





DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
  
<head>
  
    
<html:base />   
    
    
<title>desktop.jsptitle>
    
<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后面





DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
  
<head>
    
<title>desktop.jsptitle>
    
<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页面的读取。

这个问题花费了我两个礼拜的时间希望我的方法能够给同样和我一样在为这个问题烦恼的朋友有所帮助
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值