北京北大青鳥(niǎo)校區(qū):JSP中文亂碼問(wèn)題綜述(1)

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

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

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

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


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

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

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

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