編寫(xiě)過(guò)JSP頁(yè)面的朋友大概對(duì)于中文亂碼問(wèn)題已經(jīng)是司空見(jiàn)慣了,網(wǎng)上對(duì)于這方面問(wèn)題的解決辦法也很多,在此我就不多贅述了。
但是最近我遇到了一個(gè)問(wèn)題,就是我編寫(xiě)過(guò)的頁(yè)面,有時(shí)候會(huì)顯示繁體字;而這個(gè)是通常的GB2312和GBK編碼方式所不能識(shí)別的,現(xiàn)在在頁(yè)上的顯示為?。
解決辦法:
?????? 將該頁(yè)面的字符編碼方式轉(zhuǎn)換為UTF-8。但這樣又會(huì)涉及到前后頁(yè)面互相傳參的問(wèn)題,有時(shí)候會(huì)出現(xiàn)亂碼。在此我列出我遇到過(guò)的幾種情況供大家參考:

1、頁(yè)面的編碼方式設(shè)為UTF-8.
?<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
2、在接收前面頁(yè)面?zhèn)鬟^(guò)來(lái)的參數(shù)時(shí),如果前面頁(yè)面的編碼為GB2312或GBK,那么接收表單數(shù)據(jù)時(shí):

???????request.setCharacterEncoding("GB2312");????
????? String nowcount=request.getParameter("nowcount");?

???? 如果前面的頁(yè)面編碼為UTF-8,那么:

?????? request.setCharacterEncoding("utf-8");????
????? String nowcount=request.getParameter("nowcount");

? 如果是通過(guò)URL傳參數(shù):
????? ?request.setCharacterEncoding("utf-8");??????????
?????? String city=request.getParameter("city");?
??????? city= new String(city.getBytes("iso8859_1"),"utf-8");?

3、經(jīng)過(guò)上面的轉(zhuǎn)換,解決了問(wèn)題的一大半,但還是遇到了新困難:
???? 如果在URL里面有兩個(gè)參數(shù):
???? 例:./index.jsp?city=北京市&type=B類(lèi)
?????? 那么在接收參數(shù)時(shí),只能接收到city,city的值是"北京市&type=B類(lèi)",其中"&"符號(hào)周?chē)赡艽嬖趤y碼,不能識(shí)別多個(gè)參數(shù)。最后我只能是將參數(shù)合在一起傳過(guò)來(lái),接收到了以后再split。解決了頁(yè)面的顯示問(wèn)題。

?? 如果哪位朋友有這方面經(jīng)驗(yàn)也希望能寫(xiě)出來(lái)與大家分享。