|
Q:解決 Web 服務(wù)器各種應(yīng)用的亂碼問題
A:(1)服務(wù)器端: 修改httpd.conf (在Redhat中放置的位置為/etc/httpd/conf/) 查找: AddDefaultCharset ISO-8859-1 改成: #AddDefaultCharset ISO-8859-1 AddDefaultCharset off 這種方式關(guān)掉了服務(wù)器的默認語言的發(fā)送,這樣僅憑html文件頭中設(shè)置的語言來決定網(wǎng)頁語言。 很多文章都說通過修改為 AddDefaultCharset GB2312 把缺省語言改成GB2312來解決中文亂碼,確實GB2312內(nèi)碼的網(wǎng)頁可以正常顯示了,但這并非萬全之策。因為當你的網(wǎng)頁內(nèi)碼不是GB2312,就算你在網(wǎng)頁用下面的meta指定了正確的語言,如ISO8859-1,也不會解碼為ISO8859-1,因為Apache已經(jīng)先你一步將GB2312指定為網(wǎng)頁的語言了。 (2)養(yǎng)成良好的習慣,在每個網(wǎng)頁的〈head〉;〈/head〉;的最前面加入這行: 〈meta http-equiv=“Content-Type“ content=“text/html; charset=gb2312“〉; 一般的中文版網(wǎng)頁編輯工具(例如FrontPage、Dreamweaver等)都會自動加上這行。 3、如何解決中文文件名無法訪問 在ie中選擇 工具 -〉; internet選項 -〉; 高級 -〉; 取消“總是以UTF-8發(fā)送URL”。 UTF-8網(wǎng)頁空白,在網(wǎng)頁中加上metadata標識后,還需要手動調(diào)整編碼為 utf-8 才能正常顯示 如果使用的是Mozilla、Mozilla Firefox、Sarafi等其他目前流行的瀏覽器,通常就不會有這樣的問題。 在網(wǎng)頁的meta中指定用UTF-8: 〈meta http-equiv=“Content-Type“ content=“text/html; charset=UTF-8“ /〉; 在〈head〉;〈/head〉;之前,把“Content-Type“放在最前面,便可以解決這樣的問題了。 原因: IE 解析網(wǎng)頁編碼時是 HTML 內(nèi)的標識優(yōu)先的,然后是 HTTP header ;而mozilla 系列的瀏覽器剛剛好相反。 一般情況在,很多人是把〈title〉;〈/title〉;排在最前面,并且在title中就出現(xiàn)了UTF-8中文,這樣,IE在解析時,就先遇到UTF-8,不往下解析了,因此必須把如果把meta放在UTF-8出現(xiàn)之前,這樣IE才能判斷這個網(wǎng)頁是以UTF-8編碼的。 總之:無論是 PHP、JSP、ASP 或其他動態(tài)網(wǎng)頁的腳本語言,如果需要作編碼設(shè)定,最好放在最前面。 使用php,也可以定義php的默認語言. php.ini中: default_charset = “gb2312“ 釋掉此行,做了以上修改,一樣是為了讓瀏覽器根據(jù)網(wǎng)頁頭中的charset來自動選擇語言,這樣就可以在同臺服務(wù)器上提供多種語言的網(wǎng)頁服務(wù)。 java中文亂碼的解決 轉(zhuǎn) 在基于JAVA的編程中,經(jīng)常會碰到漢字的處里及顯示的問題,比如一大堆亂碼或問號。 這是因為JAVA中默認的編碼方式是UNICODE,而中國人通常使用的文件和DB都是基于GB2312或者BIG5等編碼,故會出現(xiàn)此問題。 1、在網(wǎng)頁中輸出中文。 JAVA在網(wǎng)絡(luò)傳輸中使用的編碼是“ISO-8859-1“,故在輸出時需要進行轉(zhuǎn)化,如: String str=“中文“; str=new String(str.getBytes(“GB2312“),“8859_1“); 但如果在編譯程序時,使用的編碼是“GB2312”,且在中文平臺上運行此程序,不會出現(xiàn)此問題,一定要注意。 2、從參數(shù)中讀取中文 這正好與在網(wǎng)頁中輸出相反如: str=new String(str.getBytes(“8859_1“),“GB2312“); 3、操作DB中的中文問題 一個較簡單的方法是:在“控制面扳”中,把“區(qū)域”設(shè)置為“英語(美國)”。如果還會出現(xiàn)亂碼,還可進行如下設(shè)置: 取中文時:str=new String(str.getBytes(“GB2312“)); 向DB中輸入中文:str=new String(str.getBytes(“ISO-8859-1“)); 4、在JSP中的中文解決: 在“控制面扳”中,把“區(qū)域”設(shè)置為“英語(美國)”. 在JSP頁面中加入: 如果還不行正常顯示,則還要進行下面的轉(zhuǎn)換: 如:name=new String(name.getBytes(“ISO-8859-1“),“GBK“); 就不會出現(xiàn)中文問題了。 CGI的?不知道對不? 找到CGI.pm,打開它,找到$self-〉;charset(’ISO-8859-1’);將它改為$self-〉;charset(’GB2312’); |
|
|
來自: wuxyu > 《計算機相關(guān)》