PHP出現亂碼,解決亂碼的方法

2021-07-16 08:41:29 字數 1375 閱讀 8840

一,出現亂碼的原因分析

1,儲存檔案時候,檔案有自己的檔案編碼,就是漢字,或者其他國語言,以什麼編碼來儲存

2,輸出的時候,要給內容指定編碼,如以網頁的形勢輸入時

3,從資料庫取出資料時,搞不清楚資料庫,設定的字符集

4,以漢字為例,漢字本來也有編碼的,乙個漢字gbk要二個字元,而utf8要三個字元

上面說了有可能引起亂碼的潛在原因,我現在把它們排列組合一下。

第一種情況,儲存檔案和顯示編碼的不一致

假如儲存檔案時候,你用的utf8編碼,網頁輸出時,你設定的是gbk編碼,這樣就會出現亂碼,

第二種情況,儲存檔案和資料庫的儲存的字元不一致

假如,儲存檔案的編碼和網頁顯示的編碼一樣時,還是出現亂碼了,例如,你儲存檔案時,用的utf8編碼,而你資料庫用的是gb2312字符集來儲存資料。

第三種情況,已經亂碼了,你還認為沒有

當你發現出現亂碼時,去改變儲存檔案的編碼的時候,utf8情況是好的,當你把它換成gbk的話就亂碼了,但是你還以為是好的。這也是出現亂碼的原因。這種情況會經常出現。

第四種情況,資料庫裡面本來就是亂碼

資料的字符集,儲存檔案的編碼,網頁顯示編碼都一樣了,還是出現亂碼了,這種情況大多數,是資料入資料庫的時候,就亂碼了,這種情況是比較麻煩的。 

二,我解決亂碼的方法,百試不爽

我把這種方法起個名子叫庖丁解牛法。哈哈。資料庫,儲存檔案編碼,顯示時候的編碼必須一致,並且以資料庫為準

第一種,資料庫和儲存檔案的編碼是utf8,網頁顯示呢是gb2312,這個時候,我們就要改顯示編碼了

第二種,資料庫和網頁顯示都是utf8,儲存檔案用的是gb2312,這個時候呢,要注意一種,直接把儲存檔案的編碼改過,是不行的,在改編碼之前,把檔案的內容先copy一下,編碼改過以後,在把剛才copy的內容粘回去,這樣就ok了.

第三種,資料庫用的utf8,儲存檔案和顯示編碼是gb2312,這個時候呢,你可以用程式自帶的函式把從資料庫取出的資料進行一下轉碼把,utf8轉成gb2312這樣就不用去改變檔案自己的編碼了,以及顯示編碼了。以php為例,mb_convert_encoding($string,」gb2312″,」utf8″);

第四種,資料庫亂碼,是資料錄入時候,資料本身和資料庫儲存編碼不一樣造成的。例如:資料庫的儲存編碼是utf8,在資料入庫的時候,加上乙個mysql_query(「set names utf8;」);

三,亂碼表現的形勢

亂碼的表現呢,我是遇到過二個,

1)就是出現在的字型亂碼了,變成怪七怪八的字元了

2)就是直接是空白頁面,檢視原始碼呢,什麼都沒有,像這種情況,有的時候,很想起是因為是亂碼造成的。右擊頁面在,檢視屬性,改一下編碼就知道是不是因為亂碼引起的空白頁面了。

PHP出現中文亂碼怎麼解決

今天寫了個拼接字串的小練習 第乙個字串 str1 今天冬至!第二個字串 str2 吃餃子了嗎?中間用空格拼接 echo str1 str2 瀏覽器輸出 今天冬至!吃餃子了嗎?瀏覽器對我好像不太友好,輸出了這個東西 這裡只需要加上乙個header就可以了,這樣子 防止亂碼 header content...

PHP MYSQL 出現亂碼的解決方法

使用php mysql時遇到過字元亂問題,解決方法 在mysql connect後面加一句set names utf8,即可使得utf8的資料庫消除亂碼,對於gbk的資料庫則使用set names gbk,如下 1 mysql mylink mysql connect mysql host,mysq...

Ubuntu出現亂碼的解決方法

解決方法 ubuntu 系統的字元編碼儲存在檔案 var lib locales supported.d local中。要為 ubuntu 系統新增中文字元編碼,可以直接使用 locale gen sudolocale gen zh cn.utf 8 使用以上命令即可完成中文字符集的新增,完成後會在...