自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL與PHP產(chǎn)生亂碼的具體原因和解決辦法介紹

開發(fā) 后端
MySQL+PHP產(chǎn)生亂碼的原因有很多,比如:MySQL數(shù)據(jù)庫默認(rèn)的編碼是utf8,如果這種編碼與你的PHP網(wǎng)頁不一致;MySQL中創(chuàng)建表時(shí)會(huì)讓你選擇一種編碼,如果這種編碼與你的網(wǎng)頁編碼不一致等等。

PHP語言被用到的最多的地方要數(shù)網(wǎng)站的建設(shè)。那么它肯定和數(shù)據(jù)庫是脫不了干系的。在PHP與數(shù)據(jù)庫聯(lián)合使用的過程中也會(huì)經(jīng)常出現(xiàn)一些令人困擾的問題。今天我們就為大家具體介紹MySQL與PHP產(chǎn)生亂碼產(chǎn)生亂碼的具體原因和解決辦法介紹。

#t#MySQL與PHP產(chǎn)生亂碼的原因:

◆ MySQL數(shù)據(jù)庫默認(rèn)的編碼是utf8,如果這種編碼與你的PHP網(wǎng)頁不一致,可能就會(huì)造成MySQL亂碼;

◆ MySQL中創(chuàng)建表時(shí)會(huì)讓你選擇一種編碼,如果這種編碼與你的網(wǎng)頁編碼不一致,也可能造成MySQL亂碼;

◆ MySQL創(chuàng)建表時(shí)添加字段是可以選擇編碼的,如果這種編碼與你的網(wǎng)頁編碼不一致,也可能造成MySQL亂碼;

◆ 用戶提交頁面的編碼與顯示數(shù)據(jù)的頁面編碼不一致,就肯定會(huì)造成PHP頁面亂碼;

◆ 如用戶輸入資料的頁面是big5碼, 顯示用戶輸入的頁面卻是gb2312,這種100%會(huì)造成PHP頁面亂碼;

◆ PHP頁面字符集不正確;

◆ PHP連接MySQL數(shù)據(jù)庫語句指定的編碼不正確。

注意:

很多人都懷疑MySQL版本不一致會(huì)導(dǎo)致MySQL與PHP產(chǎn)生亂碼,相信看了本說明你就不會(huì)這樣認(rèn)為了。

平時(shí)你在某些網(wǎng)站看到的文字可能有幾種編碼, 如你看到一個(gè)繁體字,它有可能是big5編碼,也有 可能是utf-8編碼的,更有可能是gb碼的,沒錯(cuò),也就是說有簡體編碼的繁體字,也有繁體編碼的簡體字,一定要了解這一點(diǎn)。

如果你是做一個(gè)簡體編碼的網(wǎng)頁,編碼定為GB2312,如果有香港和臺(tái)灣地區(qū)的訪客提交繁體的信息,就可能會(huì)造成亂碼,解決方法:

將網(wǎng)站編碼設(shè)為 utf-8,這樣可以兼容世界上所有字符。

如果網(wǎng)站已經(jīng)運(yùn)作了好久,已有很多舊數(shù)據(jù),不能再更改簡體中文的設(shè)定,那么建議將頁面的編碼設(shè)為 GBK, GBK與GB2312的區(qū)別就在于:GBK能比GB2312顯示更多的字符,要顯示簡體碼的繁體字,就只能用GBK。

使用MySQL與PHP產(chǎn)生亂碼的原因都了解得很清楚了,那么解決就不困難了。

MySQL與PHP產(chǎn)生亂碼的解決辦法:

如果安裝MySQL的編碼已不能更改,很多朋友是購買虛擬主機(jī)建立網(wǎng)站,無權(quán)更改MySQL的安裝編碼,這一關(guān)我們可以跳過,因?yàn)橹灰竺娴牟骄壅_,一樣能解決亂碼問題。

修改數(shù)據(jù)庫編碼,如果是數(shù)據(jù)庫編碼不正確,可以在PHPmyadmin 執(zhí)行如下命令:

  1. ALTER DATABASE 'test'
     DEFAULT CHARACTER SET 
    utf8 COLLATE utf8_bin 

以上命令就是將test數(shù)據(jù)庫的編碼設(shè)為utf8。

修改表的編碼:

  1. ALTER TABLE 'category' 
    DEFAULT CHARACTER SET 
    utf8 COLLATE utf8_bin 

以上命令就是將一個(gè)表category的編碼改為utf8。

修改字段的編碼:

  1. ALTER TABLE 'test'
     CHANGE 'dd' 'dd' VARCHAR( 45 ) 
    CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 

以上命令就是將test表中dd的字段編碼改為utf8。

如果是這種情況容易解決,只需檢查下頁面,修改源文件的charset即可。

這種情況也是修改頁面charset即可。

在連接數(shù)據(jù)庫的語句中。

  1. mysql_connect('localhost','user','password'); 
  2. mysql_select_db('my_db'); 
  3. mysql_query("set names utf8;"); 
    //select 數(shù)據(jù)庫之后加多這一句 

為了避免PHP頁面亂碼的發(fā)生,PHP頁面開始***句

  1. header("content-type:text/html; charset=utf-8"); 
    //強(qiáng)行指定頁面的編碼,以避免亂碼 

注意:照以上方法修改以后只能保證你新插入的數(shù)據(jù)不會(huì)造成MySQL與PHP產(chǎn)生亂碼,舉個(gè)例:如果你用戶已提交的數(shù)據(jù)是BIG5,你卻想通過以上方法改為可以在GB2312的網(wǎng)頁正確顯示是不可能的, 這種文字內(nèi)碼的變換只能通過另寫程序來解決。

責(zé)任編輯:曹凱 來源: 百度博客
相關(guān)推薦

2009-11-30 10:55:16

PHP頁面亂碼

2009-11-30 10:09:31

PHP中文亂碼

2009-11-27 09:55:11

PHP截取中文字符

2009-12-03 17:36:02

PHP Date()出

2024-01-04 09:04:02

2009-06-03 16:41:21

Eclipse亂碼Eclipse

2010-05-20 10:00:58

MySQL 中文亂碼

2010-02-03 16:07:07

Ubuntu Auda

2009-11-30 12:58:04

PHP字符集編碼

2009-11-24 14:32:03

PHP限制上傳文件大小

2010-06-07 09:22:21

MySQL+PHP亂碼

2009-07-31 09:14:01

WinCE啟動(dòng)失敗

2010-05-31 10:45:09

MySQL+tomca

2010-05-17 17:45:54

MySQL亂碼問題

2017-06-21 08:30:20

MySQL原因解決辦法

2009-11-30 13:04:38

PHP獲取Oracle

2009-02-25 15:39:15

亂碼原理MySQL

2010-05-04 13:52:00

Oracle用戶被鎖

2015-03-09 15:41:08

MongoDB查詢超時(shí)異常Socket Time

2010-07-23 11:35:03

SQL Server置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)