Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 關於服務器 >> 解決web服務器各種應用的亂碼問題

解決web服務器各種應用的亂碼問題

日期:2017/2/8 10:30:53      編輯:關於服務器

亂碼問題:

(1)服務器端: 
修改httpd.conf (在Redhat中放置的位置為/etc/httpd/conf/) 
查找: 
AddDefaultCharset ISO-8859-1 
改成: 

#AddDefaultCharset ISO-8859-1 

AddDefaultCharset off 

這種方式關掉了服務器的默認語言的發送,這樣僅憑html文件頭中設置的語言來決定網頁語言。 

很多文章都說通過修改為 AddDefaultCharset GB2312 把缺省語言改成GB2312來解決中文亂碼,確實GB2312內碼的網頁可以正常顯示了,但這並非萬全之策。因為當你的網頁內碼不是GB2312,就算你在網頁用下面的meta指定了正確的語言,如ISO8859-1,也不會解碼為ISO8859-1,因為Apache已經先你一步將GB2312指定為網頁的語言了。


(2)養成良好的習慣,在每個網頁的<head>;</head>;的最前面加入這行: 

    

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">; 

  一般的中文版網頁編輯工具(例如FrontPage、Dreamweaver等)都會自動加上這行。 

3、如何解決中文文件名無法訪問 

 

 在ie中選擇 工具 ->; internet選項 ->; 高級 ->; 取消“總是以UTF-8發送URL”。 





UTF-8網頁空白,在網頁中加上metadata標識後,還需要手動調整編碼為 utf-8 才能正常顯示

如果使用的是Mozilla、Mozilla Firefox、Sarafi等其他目前流行的浏覽器,通常就不會有這樣的問題。

在網頁的meta中指定用UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />; 



在<head>;</head>;之前,把"Content-Type"放在最前面,便可以解決這樣的問題了。 

原因:

IE 解析網頁編碼時是 HTML 內的標識優先的,然後是 HTTP header ;而mozilla 系列的浏覽器剛剛好相反。

一般情況在,很多人是把<title>;</title>;排在最前面,並且在title中就出現了UTF-8中文,這樣,IE在解析時,就先遇到UTF-8,不往下解析了,因此必須把如果把meta放在UTF-8出現之前,這樣IE才能判斷這個網頁是以UTF-8編碼的。 


總之:
無論是 PHP、JSP、ASP 或其他動態網頁的腳本語言,如果需要作編碼設定,最好放在最前面。

使用php,也可以定義php的默認語言. 

php.ini中: 

default_charset = "gb2312" 



釋掉此行,做了以上修改,一樣是為了讓浏覽器根據網頁頭中的charset來自動選擇語言,這樣就可以在同台服務器上提供多種語言的網頁服務。


java中文亂碼的解決 


 
 
在基於JAVA的編程中,經常會碰到漢字的處裡及顯示的問題,比如一大堆亂碼或問號。
這是因為JAVA中默認的編碼方式是UNICODE,而中國人通常使用的文件和DB都是基於GB2312或者BIG5等編碼,故會出現此問題。

1、在網頁中輸出中文。

JAVA在網絡傳輸中使用的編碼是"ISO-8859-1",故在輸出時需要進行轉化,如:
String  str="中文";
str=new  String(str.getBytes("GB2312"),"8859_1");
但如果在編譯程序時,使用的編碼是“GB2312”,且在中文平台上運行此程序,不會出現此問題,一定要注意。

2、從參數中讀取中文

這正好與在網頁中輸出相反如:
str=new  String(str.getBytes("8859_1"),"GB2312");

3、操作DB中的中文問題

一個較簡單的方法是:在“控制面扳”中,把“區域”設置為“英語(美國)”。如果還會出現亂碼,還可進行如下設置:
取中文時:str=new  String(str.getBytes("GB2312"));
向DB中輸入中文:str=new  String(str.getBytes("ISO-8859-1"));

4、在JSP中的中文解決:

在“控制面扳”中,把“區域”設置為“英語(美國)”.
在JSP頁面中加入:
如果還不行正常顯示,則還要進行下面的轉換:
如:name=new  String(name.getBytes("ISO-8859-1"),"GBK");
就不會出現中文問題了。

CGI的?不知道對不?

找到CGI.pm,打開它,找到$self->;charset('ISO-8859-1');將它改為$self->;charset('GB2312');
Copyright © Windows教程網 All Rights Reserved