中文亂碼這個(gè)問(wèn)題,在我們的開(kāi)發(fā)過(guò)程中是個(gè)經(jīng)常遇到的問(wèn)題,而這一問(wèn)題的答案和解決方案也遍布互聯(lián)網(wǎng)的各個(gè)角落。隨便搜一下中文亂碼,可以找到符合條件的記錄成千上萬(wàn)。然而由于使用框架的不同,各人的開(kāi)發(fā)環(huán)境的不同,中文亂碼的情況及原因也各不相同。
情況:有可能是在數(shù)據(jù)庫(kù)里顯示中文而頁(yè)面進(jìn)行提交時(shí)就成了亂碼,有可能頁(yè)面能正常顯示中文而數(shù)據(jù)庫(kù)里卻不能正常顯示中文。總之情況有很多種,數(shù)據(jù)庫(kù)里不能正常顯示中文有可能就是數(shù)據(jù)庫(kù)的問(wèn)題,要么是建表時(shí)沒(méi)選擇好編碼要么是啟動(dòng)參數(shù)等問(wèn)題,而更常見(jiàn)的是在頁(yè)面提交的中文,在服務(wù)端就成亂碼的情況(本人昨天也遇到這情況),網(wǎng)上的很多解決方案,
首先配置web.xml的filter是必須的,而配置完畢后還是有中文問(wèn)題的話(huà),有的人說(shuō)問(wèn)題出在filter,用spring自帶的filter不行,自己寫(xiě)了一個(gè)filter后解決;(本人是自己寫(xiě)的filter);有人說(shuō)tomcat4.x沒(méi)有這個(gè)問(wèn)題,5.x就有編碼問(wèn)題。在Tomcat的server.xml的Connector部分添加URIEncoding="GBK",server.xml添加后內(nèi)容如下:
<Connector URIEncoding="GBK" port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
本人也試過(guò),沒(méi)用,最后查找資料查到下面三條語(yǔ)句的含義:
1、<%@ page language="java" pageEncoding="gbk"%>
2、<%@ page contentType="text/html;charset=gbk"%>
3、<meta http-equiv="Content-Type" content="text/html; charset=gbk">
第一句編碼格式為jsp文件的存儲(chǔ)格式。
第二句web服務(wù)器在發(fā)送相應(yīng)內(nèi)容是使用解碼 格式。
第三句是告訴瀏覽器需要使用UTF-8的編碼來(lái)處理web服務(wù)器的相應(yīng)內(nèi)容。
雖然這三條語(yǔ)句可能對(duì)于解決沒(méi)有直接的作用,但是這個(gè)是亂碼產(chǎn)生原因的基礎(chǔ)所在。只要認(rèn)真理解上面三條語(yǔ)句的含義,在頁(yè)面中統(tǒng)一編碼中文問(wèn)題就有答案了。
---------------------------------------------------------------------------------------------------------------------------------
說(shuō)人之短,乃護(hù)己之短。夸己之長(zhǎng),乃忌人之長(zhǎng)。皆由存心不厚,識(shí)量太狹耳。能去此弊,可以進(jìn)德,可以遠(yuǎn)怨。
http://m.tkk7.com/szhswl
------------------------------------------------------------------------------------------------------ ----------------- ---------
posted on 2007-12-18 09:54
宋針還 閱讀(2554)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
常見(jiàn)問(wèn)題