隨筆-55  評論-208  文章-0  trackbacks-0
          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頁面的讀取。

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

          評論:
          # re: 關于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-12 12:21 | pfood
          謝謝  回復  更多評論
            
          # re: 關于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-12 14:10 | keith
          這問題我在M7上問過,他們是根據<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >確定文件編碼的,希望能改進一下,這樣很不合理,因為不是所有頁面都要增加的的,例如include進來的,再在每頁都加上meta不就重復了。
          最好能改成根據<%@ page language="java" pageEncoding="UTF-8"%>來保存文件的編碼。
          如果能像myeclipse那樣就更好了  回復  更多評論
            
          # re: 關于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-12 14:29 | rocket
          @keith
          是的,買了這么貴的東西,其它都很好用,但是要是因為這一個小問題影響了使用真的是太不應該了  回復  更多評論
            
          # re: 關于workshop(原nitrox m7)的utf-8中文亂碼問題解決 2006-04-13 10:13 | Harryson
          樓主辛苦了,
          找出問題了,肯定很興奮.
          找bug很有挑戰性.  回復  更多評論
            
          # re: 關于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" 是需要新增的。
          我也被這樣的問題困惑過。

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

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


          網站導航:
           
          主站蜘蛛池模板: 庆安县| 中宁县| 万安县| 当雄县| 大新县| 沈阳市| 临湘市| 滦平县| 新河县| 北碚区| 固始县| 双柏县| 内乡县| 清流县| 四平市| 黔西| 班玛县| 马龙县| 涿州市| 宁远县| 万年县| 青田县| 广宗县| 望江县| 习水县| 葵青区| 镇远县| 黄龙县| 南昌县| 雷州市| 时尚| 莱西市| 易门县| 高雄县| 阿鲁科尔沁旗| 眉山市| 昭平县| 新龙县| 陆丰市| 左权县| 志丹县|