關於頁面中亂碼的問題的解決辦法

2021-07-24 01:26:47 字數 1811 閱讀 3690

1) 使用 標籤設定頁面編碼

這個標籤的作用是宣告客戶端的瀏覽器用什麼字符集編碼顯示該頁面,*** 可以為 gb2312、gbk、utf-8(和 mysql 不同,mysql 是 utf8)等等。因此,大部分頁面可以採用這種方式來告訴瀏覽器顯示這個頁面的時候採用什麼編碼,這樣才不會造成編碼錯誤而產生亂碼。但是有的時候我們會發現有了這句還是不行,不管 *** 是哪一種,瀏覽器採用的始終都是一種編碼,這個情況我後面會談到。

請注意, 是屬於 html 資訊的,僅僅是乙個宣告,僅表明伺服器已經把 html 資訊傳到了瀏覽器。

2) header(「content-type:text/html; charset=***」);

這個函式 header() 的作用是把括號裡面的資訊發到 http 標頭。如果括號裡面的內容為文中所說那樣,那作用和 標籤基本相同,大家對照第乙個看發現字元都差不多的。但是不同的是如果有這段函式,瀏覽器就會永遠採用你所要求的 *** 編碼,絕對不會不聽話,因此這個函式是很有用的。為什麼會這樣呢?那就得說說 http 標頭和 html資訊的差別了:

http 標頭是伺服器以 http 協議傳送 html 資訊到瀏覽器前所送出的字串。而 標籤是屬於 html 資訊的,所以 header() 傳送的內容先到達瀏覽器,通俗點就是 header() 的優先順序高於 (不知道可不可以這樣講)。假如乙個 php 頁面既有header(「content-type:text/html;charset=***」),又有,瀏覽器就只認前者 http 標頭而不認 meta 了。當然這個函式只能在 php 頁面內使用。

同樣也留有乙個問題,為什麼前者就絕對起作用,而後者有時候就不行呢?這就是接下來要談的apache 的原因了。

3) adddefaultcharset

apache 根目錄的 conf 資料夾裡,有整個 apache 的配置文件 httpd.conf。

用文字編輯器開啟 httpd.conf,第 708 行(不同版本可能不同)有 adddefaultcharset ***,***為編碼名稱。這行**的意思:設定整個伺服器內的網頁檔案 http 標頭里的字符集為你預設的 ***字符集。有這行,就相當於給每個檔案都加了一行 header(「content-type:text/html; charset=***」)。這下就明白為什麼明明 設定了是 utf-8,可瀏覽器始終採用 gb2312 的原因。

如果網頁裡有 header(「content-type:text/html; charset=***」),就把預設的字符集改為你設定的字符集,所以這個函式永遠有用。如果把 adddefaultcharset *** 前面加個」#」,注釋掉這句,而且頁面裡不含 header(「content-type…」),那這個時候就輪到 meta 標籤起作用了。

下面列出以上的優先順序:

header(「content-type:text/html; charset=***」)

.. adddefaultcharset ***

..如果你是 web 程式設計師,建議給你的每個頁面都加個header(「content-type:text/html;charset=***」),這樣就可以保證它在任何伺服器都能正確顯示,可移植性也比較強。

4) php.ini 中的 default_charset 配置:

php.ini 中的 default_charset = 「gb2312″ 定義了 php 的預設語言字符集。一般推薦注釋掉此行,讓瀏覽器根據網頁頭中的 charset 來自動選擇語言而非做乙個強制性的規定,這樣就可以在同台伺服器上提供多種語言的網頁服務。

關於PHP亂碼問題的解決辦法

問題描述 php中文 以及注釋在頁面中顯示正常,但是在chrome開發工具中的network欄目下的preview和response中顯示為亂碼。思路 一開始按照其他部落格上的方法,把chrome瀏覽器的編碼設定成utf 8,但是查閱資料後發現這個選項早在chrome55中就取消了。然後無意中修改了...

關於perl中中文亂碼的解決辦法

今天在測試lwp模組的時候,發現讀取的 內容含有中文的輸出後都是亂碼,於是學習了一下perl的encode模組,寫一下總結,做個備忘,也希望能對其他的朋友有幫助!先來學習一下perl中編碼的基礎知識 在perl看來,字串只有兩種形式。一種是octets,即8位序列,也就是我們通常說的位元組陣列。另一...

關於DN名稱亂碼的解決辦法!

這裡必須得感謝微軟合作夥伴論壇的各位技術同仁的大力協助,在此謝過了。我順便將問題的本源和解決方法貼在這裡一下 我的問題相信各位都碰到過,因為dn名稱是根據fullname 生成的,而生成fullname 很多公司都不標準,有些中文簡體,有些繁體,有些日語,有些阿拉伯語。這個時候在沒有安裝語言支援的時...