曹亮
摘 要:JSP技術是動態網頁制作的關鍵,也是現今主流的動態網頁制作技術。在網頁的設計和開發過程中,經常會出現一些中文亂碼的問題,嚴重影響動態網頁的開發和使用。所以本文先分析了常見的中文編碼格式,然后從4個方面詳細闡述了中文亂碼的問題及解決方法。
關鍵詞:JSP技術;中文亂碼;原因;解決方法
由于在動態網頁制作中,中文主要是利用特殊的字符編碼方式,因此在網頁制作中很容易產生亂碼問題。利用JSP技術開發的WEB平臺在任何一個操作系統之上都能使用,中文亂碼會給設計人員造成很大的困擾。由此可見,解決中文亂碼問題是JSP技術開發動態網頁必須解決的重要問題。
1 常見編碼格式
(1)ISO-8859-1編碼,也稱之為Latin-1編碼。ASCII 編碼的128個字符顯然是不夠用的,因此ISO組織在此基礎上進行了拓展,從 ISO-8859-1到ISO-8859-15,應用最廣泛的是ISO-8859-1,主要因為ISO-8859-1是單字節編碼。
(2)Unicode編碼。Unicode是目前最統一的編碼格式,但是它卻不兼容其他任何編碼格式。另外,通常所說的UTF-16,就是Unicode字符在計算機中存取的方法。
(3)GBK編碼。它是GB2312的拓展,總共含有23 940 個碼位,能表示21 003個漢字,并且它與 GB2312編碼格式兼容。
(4)UTF-8。它的主要原理是通過變長技術,使不同類型的字符能夠由1~6個字節組成。
2 亂碼問題及解決對策
中文亂碼問題一般會出現兩種情況:一是在HTML中,二是在JSP動態輸出中。造成中文亂碼的原因有多種,只有深入分析找到亂碼的位置和原因,才能解決問題,提高動態網頁制作效率。
2.1 頁面亂碼問題
如果在進行程序調試時,在顯示界面該出現中文的地方,顯示的是字符或問號。對這種情況的解決方案是,在jsp頁面的頭部加入以下代碼<%pagecontentType=”text/html;charset=gb2312”%>,如下列的程序:
<%@ page language=”java” import=”java.util.*” %>
這是一個中文顯示示例:
<%
String str = “中文”;
out.print(str);
%>
經過瀏覽器顯示之后,本該出現中文顯示示例的中文字符,結果卻顯示了“? ? ? ?? ? ???? ? ?”這種符號,在處理這種中文亂碼問題時,可以將jsp頭部改成<%@ page language=”java”import=”java.util.*”contentType=”text/html;charset=GB2312” %> 這樣中文漢字即可正常顯示。
2.2 參數傳遞時出現亂碼問題
參數傳遞時出現亂碼問題,只要在傳遞參數時,進行編碼轉換就可以解決。具體代碼為<%String str=newString(request.getParameter(“str”).getBytes(“iso-8859-1”),”gb2312”);%>。
如下列程序:
<%@ page language=”java” import=”java.util.*” contentType=”text/html;charset=gb2312”%>
<%
String param = request.getParameter(“param”);
%>
你提交的參數為:<%=param%>
在程序運行之后,有時會顯示提交的參數為???。這種亂碼在動態網頁的設計開發中經常會發生。其解決方法是,在原來代碼中添加URI編碼設置URIEncoding=“gb2312”。這樣在進行程序運行之后,就能夠顯示正常的參數。
2.3 表單亂碼問題
表單問題產生的主要原因是提交表單的方法程序并不支持中文字符,通常默認的編碼格式是ISO-8859-1。一般解決這種問題的方法是,在頁面中或是sevlet中以及在過濾時進行解決,如設置 request 和 response 的編碼(頁面編碼必須為 u8),或者是添加
屬性。無論是采用哪種解決方法,都需要程序員根據實際的程序來選擇。2.4 瀏覽器不識別問題
瀏覽器不識別問題的主要表現就是在提交中文字符時出現亂碼問題,而提交英文字符時則顯示正常。產生這種問題的主要原因是瀏覽器默認的編碼格式和程序編碼格式不兼容,瀏覽器無法識別中文字符。解決這種問題只須通過request.setCharacterEncoding(“gb2312”)對請求進行統一編碼即可。這樣經過編碼格式的統一之后,中文字符就會正常顯示。
3 總結
綜上所述,中文亂碼產生的主要原因是編碼格式的不統一,并且編碼格式之間基本不兼容。另外,在處理中文亂碼問題時,找到亂碼問題的原因是解決問題的關鍵。由此可見,深入了解JSP技術是非常有必要的。
參考文獻
[1]徐珊.JSP技術中的中文亂碼成因與對策探析[J].山東工業技術,2015,(19):220.
[2]梅錦峰,陽小蘭,錢程,等.JSP初學者遇到的中文亂碼問題及解決方案[J].黑龍江科技信息,2016,(4):180.
(作者單位:哈爾濱市南崗房產經營物業管理有限責任公司第一分公司)