首頁 > 網際網路

php程式有亂碼,網頁有亂碼

2019-12-13 23:56:25

用php語言開發網站的時候,經常遇到亂碼的問題,其實這是由於資料庫、程式、頁面,這三者的字元編碼方式不一致引起的,解決這些問題的關鍵就是統一字元編碼。

1

首先,我們來了解GBK編碼和UNICODE編碼前者包含全部的中文字元,後者包含了全世界所有國家需要用到的字元一般國際性較強的網站都會選擇UNICODE編碼來搭建網站,這樣可以避免繁瑣的字元轉換或者亂碼問題

2

網頁亂碼的出現,有可能是以下幾種情況:一、程式檔案編碼方式與瀏覽器頁面編碼方式不一致二、資料表的編碼方式與瀏覽器頁面的編碼方式不一致三、程式檔案的編碼方式與資料表(含欄位)的編碼方式不一致

3

首先,我們來了解一下基本的亂碼情況,

開啟firefox瀏覽器,選擇頂部選單《檢視》-《字元編碼》,

可以發現百度當前頁面是UNICODE編碼,

若將百度頁面切換到簡體中文編碼,標題和相關欄目就出現亂碼了,

再選擇回UNICODE編碼,亂碼消失,頁面消失正常。



4

接下來,我們來看一下,程式中的亂碼是如何出現的

圖一是正常顯示的Unicode編碼方式編輯的php程式檔案,

其中中文字元顯示正常;

將程式檔案強制轉換為GBK編碼方式,中文的字元就變成亂碼了




5

程式檔案轉碼編碼的過程,有時候是可逆的,是時候是完全不行的,所以

當你程式檔案編碼方式需要修改時,請先複製一份,如果程式檔案編碼方式轉換成功後出現亂碼,再講備份的程式複製過去儲存。



6

接下來,我們來看一下資料表的編碼方式,資料表的編碼方式一般來說是基礎資料庫的屬性的,所以建立資料庫的時候要選擇合適的編碼



7

解決亂碼的方法:

儘量採用國際編碼,unicode編碼(utf8,utf16是具體的表現形式)

資料表中的欄位的編碼方式也要跟資料表的編碼方式統一(這裡指的是字串型別的欄位),其他的Int,datetime無需指定

html程式碼書寫規範,寫上編碼格式

<meta charset="utf-8" />


8

從資料到程式,再到網頁,保證編碼方式的統一這樣出現亂碼的幾率就大大地減少了如果上述步驟都做到了,還出現亂碼問題,可以使用php自帶的轉碼函數iconv('現在的編碼','轉成什麼編碼','字串')

9

實際操練中,要知道以下兩點:ajax提交的資料是unicode編碼的給程式檔案轉碼時,盡量不要使用輕量級的編輯器,容易轉碼不成功

IT145.com E-mail:sddin#qq.com