隨筆-55  評論-208  文章-0  trackbacks-0
          bea workshop studio(原nitrox m7)確實(shí)是個好東西,但是我再使用它的jsp編輯器打開含有utf-8的中文jsp頁面時其中的中文是亂碼,而且你修改有亂碼的頁面后,再用別的編輯器打開發(fā)現(xiàn)原來正常的中文也都變成亂碼了。
          為了解決問題我在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的標(biāo)簽中讀取頁面的編碼的。
          于是,我先用其它的編輯器(我用的是dw8)打開有問題的jsp頁面,然后在其中添加meta標(biāo)簽
          <%@?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的編輯器打開,發(fā)現(xiàn)中文顯示正常了,本以為這樣問題就結(jié)束了
          但是當(dāng)我修改另外一個頁面后,用workshop打開發(fā)現(xiàn)依然是亂碼
          <%@?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標(biāo)簽,我在反復(fù)測試后發(fā)現(xiàn)把<html:base />這個標(biāo)簽刪除后中文就正常了,但是<html:base />這個標(biāo)簽是必須的,于是我把<html:base />這個標(biāo)簽放置在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>
          而且經(jīng)過測試我發(fā)現(xiàn),不僅僅是struts標(biāo)簽,在meta前面加入任何標(biāo)簽都將導(dǎo)致頁面的中文亂碼。
          因此我認(rèn)為workshop的jsp editer在打開文件時首先要讀取jsp頁面的meta標(biāo)簽以確定編碼,如果沒有指定字符集的meta標(biāo)簽或者在該meta標(biāo)簽前增加其它方法標(biāo)簽將會導(dǎo)致編輯器讀取編碼不正常,而使得編輯器以默認(rèn)的gb2312字符集打開文件導(dǎo)致亂碼
          總結(jié)workshop(原nitrox m7)的utf-8中文亂碼問題的解決步驟應(yīng)該是:
          1、首先確定項目的編碼是uft-8,這樣保證默認(rèn)的jsp頁面屬性是utf-8
          2、在jsp頁面中添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >,注意如果已經(jīng)含有中文并且是亂碼就必須先要用其它可以正常顯示的編輯器打開添加后并保存
          3、當(dāng)發(fā)現(xiàn)打開依然是亂碼時就要檢查是不是在<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >前還有什么需要邏輯處理的標(biāo)簽影響的workshop對jsp頁面的讀取。

          這個問題花費(fèi)了我兩個禮拜的時間希望我的方法能夠給同樣和我一樣在為這個問題煩惱的朋友有所幫助
          posted on 2006-04-12 10:52 rocket 閱讀(2587) 評論(8)  編輯  收藏

          評論:
          # re: 關(guān)于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-12 12:21 | pfood
          謝謝  回復(fù)  更多評論
            
          # re: 關(guān)于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-12 14:10 | keith
          這問題我在M7上問過,他們是根據(jù)<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >確定文件編碼的,希望能改進(jìn)一下,這樣很不合理,因為不是所有頁面都要增加的的,例如include進(jìn)來的,再在每頁都加上meta不就重復(fù)了。
          最好能改成根據(jù)<%@ page language="java" pageEncoding="UTF-8"%>來保存文件的編碼。
          如果能像myeclipse那樣就更好了  回復(fù)  更多評論
            
          # re: 關(guān)于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-12 14:29 | rocket
          @keith
          是的,買了這么貴的東西,其它都很好用,但是要是因為這一個小問題影響了使用真的是太不應(yīng)該了  回復(fù)  更多評論
            
          # re: 關(guān)于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-13 10:13 | Harryson
          樓主辛苦了,
          找出問題了,肯定很興奮.
          找bug很有挑戰(zhàn)性.  回復(fù)  更多評論
            
          # re: 關(guān)于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-13 21:56 | 小武藏
          有一種解決辦法是修改 Tomcat 的 server.xml 文件的 connnector:
          <Connector port="8080"
          maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
          enableLookups="false" redirectPort="8443" acceptCount="100"
          connectionTimeout="20000" disableUploadTimeout="true"
          URIEncoding="UTF-8" useBodyEncodingForURI="true" />

          其中 URIEncoding="UTF-8" useBodyEncodingForURI="true" 是需要新增的。
          我也被這樣的問題困惑過。

            回復(fù)  更多評論
            
          # re: 關(guān)于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-13 23:44 | rocket
          @小武藏
          謝謝你的補(bǔ)充
          不過我的問題是
          你這樣更改是在啟動服務(wù)器以后可以正確的顯示jsp頁面
          而我處理的問題是在使用eclipse編輯jsp頁面時出現(xiàn)亂碼  回復(fù)  更多評論
            
          # re: 關(guān)于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-07-26 02:46 | boin
          給Eclipse加上啟動參數(shù) -Dfile.encoding=utf-8 也能完美解決這個問題!  回復(fù)  更多評論
            
          # re: 關(guān)于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-08-12 18:10 | xudi
          強(qiáng)!太感謝了!  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 双辽市| 绵阳市| 石嘴山市| 铁力市| 绥阳县| 阿克陶县| 航空| 卢龙县| 汝阳县| 德钦县| 佛教| 盐亭县| 霞浦县| 通化市| 迭部县| 洱源县| 蓝山县| 南康市| 土默特右旗| 福安市| 舟曲县| 电白县| 昌江| 梁平县| 旬邑县| 侯马市| 孟津县| 册亨县| 加查县| 司法| 海门市| 浦东新区| 张家界市| 南川市| 隆安县| 洪湖市| 沂南县| 顺昌县| 太原市| 陇南市| 信宜市|