LAMP亂碼問題總結篇

來源:互聯網
上載者:User

 

偶爾也會遇到亂碼,時而也會有人問到亂碼問題,出於溫習和除草的目的,整理一下。剛開始碰到亂碼問題可能會不知所措,但在瞭解可能出現亂碼的幾個點之後,便可以輕鬆地避免或者解決。

這裡說的亂碼問題總體分為兩類:

一、頁面出現亂碼;

二、從資料庫取值或插入時出現亂碼;

避免出現亂碼的最好的辦法,就是在所有指定編碼的地方指定相同的編碼。推薦釆用utf-8進行統一編碼。下面分別描述及解釋下上面三種出現亂碼的情況。

第一種情況,不涉及資料庫操作,或者我們假設資料庫的操作不會造成亂碼(資料庫造成亂碼的情況在下面討論)。那麼只需要檢查指令檔的編碼和頁面編碼是否一致即可。檔案的編碼一般的文字編輯器都可以更改,如Eclipse,notepad2,Netbeans等,而網頁頁面的編碼則通過meta標籤來指定。
< meta content=” text/html; charset=UTF-8 ″ http-equiv= ”Content-Type” />

第二種情況,則需要資料庫編碼、資料庫表中該欄位的編碼及頁面編碼保持一致。資料庫編碼及欄位編碼可以在建立時設定collation來指定。頁面編碼上面已經提到。

有的時候,我們在進行資料庫操作時,插入的是什麼字元,讀取出來的時候還是那些字元,好像沒有什麼問題。但是當我們對資料庫進行管理的時候,在第三方工具裡顯示的卻是亂碼。這就是由於串連資料庫時的編碼和資料庫的編碼或者頁面編碼不一致造成的。我們可以在資料庫連接建立後通過sql 語句來指定編碼:SET NAMES UTF8,注意沒有連字號。

總結:這裡推薦的方式是將所有的編碼指定為utf-8。
指令檔編碼:utf-8
網頁頁面編碼:
< meta content=” text/html; charset=UTF-8 ″ http-equiv= ”Content-Type” />
資料庫及欄位編碼:utf8_general_ci
資料庫連接編碼:SET NAMES UTF8;

題外話:為何推薦採用UTF8編碼?唯一記得的就是它是國際通用的語言編碼,相容性比較好,故用之。下面摘取一段專業的說明:

使用UTF-8編碼唯一的好處是,國外的使用者如果使用Windows XP英文版,瀏覽UTF-8編碼的任何網頁,無論是中文、還是日文、韓文、阿拉伯文,都可以正常顯示,UTF-8是世界通用的語言編碼,UTF-8的推廣要歸功於Google的應用,以及Blog開發人員。而如果用Windows XP英文版的IE6.0瀏覽gb2312語言編碼的網頁,則會提示是否安裝語言套件。因此,可能會失去很多的國外瀏覽者。

使用gb2312編碼的好處是,因為程式產生的網頁文本使用ANSI編碼格式,會比UTF-8文本編碼節省一些體積,訪問速度會稍微快一點點,體積比請見我這裡做的精確的實驗。

我們來看看日本語的Blog,使用Japanese (EUC)編碼、UTF-8編碼都佔多數;韓國語的Blog,UTF-8編碼佔多數,Korean (EUC)、Korean也同樣占較大部分。

由此可以得出,使用UTF-8語言編碼,還是使用本國的語言編碼,與是否愛國沒有多大關係,或者說,壓根兒就沒有關係,在中國,沒有一個人是不愛國的。我一直在UTF-8和gb2312之間徘徊,要不要使用UTF-8編碼?千萬次地問。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。