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