談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽

          文檔出處:http://www.aygfsteel.com/badboyryan/archive/2007/01/05/91997.html

          同事在用IBM Portal的WEB剪切的時候,預覽效果的時候發現頁面全部是亂碼why?

          其實這個問題是編碼的問題,理解了jsp里面的編碼是解決問題的關鍵,看看這段代碼:
          <%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="GB18030"%>
          <%@ taglib uri="<%@ taglib uri="<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
          <tiles:insert page="/common/tiles/level2pageTiles.jsp" flush="true">?
          ????? <tiles:put name="header" value="/daohang/shouye/display_l_1_indexHeader.jsp" />
          ????? <tiles:put name="top" value="/common/jsppage/top.jsp" />
          ????? <tiles:put name="middle" value="/daohang/shouye/display_l_1_indexMiddle.jsp"/>
          ????? <%-- 帶計數器的為/common/jsppage/bottom2.jsp --%>
          ????? <tiles:put name="bottom" value="/common/jsppage/bottom.jsp"/>
          </tiles:insert>

          我們看到:pageEncoding="GB18030"的作用是表示了該JSP文件使用的編碼方式,這個屬性主要是用于應用服務器在解析JSP文件,并轉換為servlet時使用;
          contentType="text/html; charset=gb2312" 的作用是:表示該網頁采用GB2312國標碼,這也是簡體中文標準版本,如果不加,部分瀏覽器會自動選擇編碼,從而導致亂碼出現,所以最好還是要加上;
          <meta ? http-equiv=″Content-Type″ ? content=″text/html; ? charset=gb2312″> ?   ???
             ? <!--網頁內容類型,TXT或HTML格式,編碼方式為GB2312 ? --> ?  ??
          因為JSP要經過兩次編碼, 第一階段會用到pageEncoding, 第二階段會用 utf-8 至utf-8, 第三階段就是由web容器出來的網頁, 用的是contentType.

          階段一是 JSPC的 JSP至JAVA(.java)原碼的"翻譯", 它會根據pageEncoding 的設定讀取JSP. 結果是 由指定的 pageEncoding(utf-8,Big5,gb2312)的JSP 翻譯成統一的utf-8 JAVA原碼(.java). 如果pageEncoding設定錯了, 或沒設定(預設ISO8859-1), 出來的 在這個階段就已是中文亂碼.
          階段二是由 JAVAC的JAVA原碼至JAVA BYTECODE的編譯. 不論JSP的編寫時是用(utf-8,Big5,gb2312),經過階段一的結果全都是utf-8的ENCODING的JAVA原碼.
          JAVAC用 utf-8的ENCODING讀取AVA原碼, 編譯成字串是 utf-8 ENCODING的二進制碼(.class). 這這是 JAVA VIRTUAL MACNHINE 對常數字串在 二進制碼(JAVA BYTECODE)內表單的規范.
          階段三是TOMCAT(或其的application container)載入和執行 階段二得來的JAVA二進制碼, 輸出的結果( 也就是BROWSER(客戶端)) 見到的. 這時一早隱藏在階段一和二的參數contentType, 就發揮了功效.
          Portal WEB剪切出現亂碼是因為原始剪切源的原因而引起的需要注意在頁面里面把編碼方式寫全、寫對基本就沒有問題了,還有注意如果出現?說明是在字符集中找不到這個字符就是瀏覽器解析不了,比如&nbsp;解決的辦法把他替換為全角的空格;




          FeedBack:
          # re: IBM Portal的web剪切出現亂碼的解決辦法!
          2007-01-05 15:45 | BeanSoft
          支持! 亂碼問題可真是讓學 Java 的吃盡了苦頭.  回復  更多評論
            
          主站蜘蛛池模板: 锡林浩特市| 威海市| 麻阳| 拉萨市| 嘉荫县| 泰州市| 临泽县| 遵化市| 寿宁县| 黑河市| 铁力市| 大洼县| 隆安县| 修武县| 米易县| 金平| 高雄市| 江津市| 新河县| 尼木县| 临西县| 扬州市| 宾阳县| 察哈| 桐城市| 清涧县| 抚宁县| 化德县| 新郑市| 那曲县| 措勤县| 赤峰市| 昔阳县| 阜阳市| 阿拉善左旗| 鹤山市| 屏南县| 黔西| 岐山县| 宁明县| 云梦县|