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