北京北大青鳥校區(qū):JSP中文亂碼問題綜述(1)

北京北大青鳥校區(qū)學(xué)術(shù)部老師介紹,Java的內(nèi)核和class文件是基于unicode的,這使Java程序具有良好的跨平臺性,但也帶來了一些中文亂碼問題的麻煩。北京北大青鳥校區(qū)王老師分析認(rèn)為原因主要有兩方面,Java和JSP文件本身編譯時產(chǎn)生的亂碼問題和Java程序于其他媒介交互產(chǎn)生的亂碼問題。

首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字節(jié)流的,如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現(xiàn)亂碼;谶@種亂碼,建議在Java文件中盡量不要寫中文(注釋部分不參與編譯,寫中文沒關(guān)系),如果必須寫的話,盡量手動帶參數(shù)-ecoding GBK或-ecoding gb2312編譯;對于JSP,在文件頭加上<%@ page contentType=text/html;charset=GBK%>或<%@ page contentType=text/html;charset=gb2312%>基本上就能解決這類亂碼問題。

下面北大青鳥校區(qū)老師給大家介紹一下中文亂碼最常見的解決方式

1,最基本的亂碼問題。
這個亂碼問題是最簡單的亂碼問題。一般新會出現(xiàn)。就是頁面編碼不一致導(dǎo)致的亂碼。


<%@ page language=java pageEncoding=UTF-8%>
三個地方的編碼。
第一個地方的編碼格式為jsp文件的存儲格式。Ecljpse會根據(jù)這個編碼格式保存文件。并編譯jsp文件,包括里面的漢字。

第二處編碼為解碼格式。因?yàn)榇鏋閁TF-8的文件被解碼為iso8859-1,這樣如有中文肯定出亂碼。也就是必須一致。而第二處所在的這一行,可以沒有。缺省也是使用iso8859-1的編碼格式。所以如果沒有這一行的話,“我是個好人”也會出現(xiàn)亂碼。必須一致才可以。

第三處編碼為控制瀏覽器的解碼方式。如果前面的解碼都一致并且無誤的話,這個編碼格式?jīng)]有關(guān)系。有的網(wǎng)頁出現(xiàn)亂碼,就是因?yàn)闉g覽器不能確定使用哪種編碼格式。因?yàn)轫撁嬗袝r候會嵌入頁面,導(dǎo)致瀏覽器混淆了編碼格式。出現(xiàn)了亂碼。(北京北大青鳥校區(qū),未完)

北大青鳥網(wǎng)上報(bào)名
北大青鳥招生簡章