熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java web解決常見編碼出現的問題

2013-11-23 19:33:51  來源: Java核心技術 
    在編譯過程中浏覽器通常依據http header: Contenttype的值來決定用什麼encoding 比如遇到ContentType: text/html; charset=UTF 頁面使用的就UTF編碼 但是考慮到離線的html(用戶可能把頁面html保存到本地) 打開離線的html的時候就要在meta指定編碼當然不指定也會有default值那麼不指定有時就可能出現亂碼以下是Java web應用的常見編碼問題
   
    JSP頁面的編碼
   
    有以下三種方式 如果同時有第一種和第二種的時候只有一種會生效(如果不同的話)還有第一種和第二種會覆蓋第三種最後要注意的是在使用)或)聲明編碼類型時如果頁面中include了其他JSP 對於<%@ include file=BBjsp %>和<jsp:include page=BBjsp/>的區別 假設在AAjsp中使用前一種方式includeBBjsp那麼BBjsp中就不能有重復的編碼的聲明效果是AAjsp和BBjsp都使用AAjsp中聲明的編碼方式進行編碼
   
    如果是使用後一種include的方式的話AAjsp和BBjsp中都可以有各自編碼的聲明
   
    ) <%@ page contentType=text/html;charset=UTF%>
   
    ) <%@ page pageEncoding =charset=UTF%>
   
    ) 在webxml中添加以下設置
   
    <jspconfig>
   
    <jsppropertygroup>
   
    <urlpattern>*jsp</urlpattern>
   
    <pageencoding>UTF</pageencoding>
   
    </jsppropertygroup>
   
    </jspconfig>
   
    Http Request的編碼
   
    通常浏覽在發送一個請求到服務器的時候不會設置字符編碼在服務器端為了統一編碼可以在filter 中使用requestsetCharacterEncoding(UTF)來設置編碼 一般浏覽器都是用默認的ISO字符編碼要解決中文參數亂碼的時候都必須這一步
   
    http Response的編碼
   
    http response中可以設置輸出到浏覽器的數據使用的編碼方法是responsesetCharacterEncoding(UTF)和responsesetContentType(text/html; charset=UTF 如果只是單純的設置編碼最好是用responsesetCharacterEncoding(UTF因為responsesetContentType(text/html; charset=UTF)是針對具體的MIME類型設置對應的字符編碼需要注意的是這裡設置的編
   
    碼對JSP頁面不一定起作用理由是JSP頁面有自己設置字符編碼的方式而且優先級更高
   



    webxml和weblogicxml中的mime的設置
   
    在webxml中可以指定mime映射同時也可以指定對應類型使用的字符編碼(這裡的設置也可以使用中所說的和responsesetCharacterEncoding來做到)比如
   
    <mimemapping>
   
    <extension>html</extension>
   
    <mimetype>text/html;
   
    charset=UTF</mimetype>
   
    </mimemapping>
   
    在weblogicxml中可以設置默認的mime類型和字符編碼
   
    <containerdiscriptor>
   
    <defaultmimetype>text/html; charset=UTF</defaultmimetype>
   
    </containerdiscriptor>
   
    還有
   
    <charsetparams>
   
    <inputcharset>
   
    <resourcepath>/*</resourcepath>
   
    <javacharsetname>UTF</javacharsetname>
   
    </inputcharset>
   
    </charsetparams>    
    html頁面的編碼
   
    在web應用中通常浏覽器會根據http header: Contenttype的值來決定用什麼encoding 比如遇到ContentType: text/html; charset=UTF 頁面使用的就UTF編碼但是考慮到離線的html(用戶可能把頁面html保存到本地) 打開離線的html的時候就要在meta指定編碼當然不指定也會有default值那麼不指定有時就可能出現亂碼
   
    Meta標簽<meta httpequiv=ContentType content=text/html; charset=UTF/>
   
    總的來說一個應用中html http request http response 和jsp pages中最好顯示地指定相同的字符編碼最方便的就是都設為UTF所有字符都不會出錯對於mime mapping的設置最好是在webxml中設置weblogic中的關於字符編碼的設置一般不用設置


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27096.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.