談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持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 的吃盡了苦頭.  回復  更多評論
            
          主站蜘蛛池模板: 阿拉尔市| 灵宝市| 邳州市| 开平市| 滁州市| 郸城县| 南木林县| 高尔夫| 托克逊县| 大关县| 永城市| 枣庄市| 盖州市| 文山县| 英德市| 苏尼特右旗| 洞头县| 墨脱县| 德州市| 达尔| 乌拉特前旗| 如东县| 从江县| 芜湖市| 通江县| 灵寿县| 喀喇沁旗| 周口市| 巴东县| 禄丰县| 昌宁县| 建阳市| 西安市| 北票市| 南陵县| 金湖县| 阳泉市| 伊宁市| 新津县| 常宁市| 长治县|