javascript
JSP/ Servlet常见的中文乱码原因
在開發(fā)中,我們經(jīng)常遇到中文亂碼的問題,比方:
&瀏覽器中看到的 Jsp/Servlet 頁(yè)面中的漢字成了 ’?’ ?? ?
&瀏覽器中看到的 Servlet 頁(yè)面中的漢字都成了亂碼?
&Jsp/Servlet 頁(yè)面無法顯示 GBK 漢字。
&Jsp/Servlet 不能接收 form 提交的漢字。
&JSP/Servlet 數(shù)據(jù)庫(kù)讀寫無法獲得正確的內(nèi)容。
隱藏在這些問題后面的是各種錯(cuò)誤的字符轉(zhuǎn)換和處理。解決類似的字符encoding問題,須要了解 Jsp/Servlet 的執(zhí)行過程,檢查可能出現(xiàn)故障的各個(gè)點(diǎn)。以下是一些自己運(yùn)用中的一些分享:
1.在jsp中假設(shè)指定了<%@ page contentType="text/html; charset=A"%>,那么在該jsp中全部構(gòu)造的String(不是引用),假設(shè)沒有指定編碼,那么這些String的編碼是A的;從request得到的String假設(shè)沒有指定request的編碼的話,他是iso-8859-1的;從別的地方得到的String是使用原來初始的編碼的,比方從數(shù)據(jù)庫(kù)得到String,假設(shè)數(shù)據(jù)庫(kù)的編碼是B,那么該String的編碼是B而不是A的,也不是系統(tǒng)默認(rèn)的。此時(shí),假設(shè)要輸出的String的編碼不是A,那么,非常可能顯示亂碼的,所以首先要將String正確轉(zhuǎn)化為編碼A的String,然后輸出。
?
2. 假設(shè)在jsp中沒有指定<%@ page contentType="text/html; charset=A"%>,那么相當(dāng)于指定了<%@pagecontentType="text/html; charset=ISO-8859-1" %>。
?
3. Servlet中假設(shè)運(yùn)行了語(yǔ)句:response.setContentType("text/html;charset=A");説明將response的字符輸出流編碼設(shè)置為A,全部要輸出的String的編碼要轉(zhuǎn)化為A,否則會(huì)得到亂碼。Servlet中從request得到的String的編碼和jsp中一樣的,可是在servlet java文件里構(gòu)造的String是使用的系統(tǒng)默認(rèn)的編碼的。在servelt中從外部得到的String是使用原來的編碼的,比方從編碼為B的數(shù)據(jù)庫(kù)得到的數(shù)據(jù)是編碼為B的,不是A,也不是系統(tǒng)默認(rèn)的編碼。
綜上所屬,要解決我們常見的中文亂碼問題,須要理解數(shù)據(jù)交互中Jsp, Servlet, 數(shù)據(jù)庫(kù)中數(shù)據(jù)的編碼定義,統(tǒng)一編碼格式或做適當(dāng)轉(zhuǎn)換。
總結(jié)
以上是生活随笔為你收集整理的JSP/ Servlet常见的中文乱码原因的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书-算法《程序设计导引及在线实践》-简
- 下一篇: uglifyjs压缩JS