php mysql中文亂碼的解決方法:1、修改資料庫或表格中的編碼格式;2、在PHP語句中加入「mysqli_query(“set names utf8”);」;3、在客戶端中加入“header('charset=utf-8');”即可。
推薦:《PHP影片教學》
PHP與Mysql中中文亂碼問題
當用MySQL建構資料庫的時候,有時會出現一些亂碼問題,以下是一些解決方法。
問題一:資料庫或表格中的編碼格式不正確
#在建立資料庫時,用以下程式碼來進行建立:
CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
建表的時候:
CREATE TABLE `table_name` ( id varchar(40) NOT NULL PRIMARY KEY AUTO_INCREMENT, `UserID` varchar(40) NOT NULL default '', ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
這3個設定好了,Mysql基本上就不會出問題了,即建庫和建表時都使用相同的編碼格式。
如果已經建立了資料庫可以用以下方法:
1.查看預設的編碼格式:
mysql> show variables like "%char%"; +--------------------------+---------------+ | Variable_name | Value | +--------------------------+---------------+ | character_set_client | gbk | character_set_connection | gbk | | character_set_database | utf8 | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+-------------+
註:以前2個來確定,可以使用set names utf8 ,set names gbk設定預設的編碼格式;透過workbench可以更簡單地設定資料庫的編碼。
執行SET NAMES utf8的效果等同於同時設定如下:
SET character_set_client='utf8'; SET character_set_connection='utf8'; SET character_set_results='utf8';
2.查看test資料庫的編碼格式:
mysql> show create database test; +------------+------------------------------------------------------------------------------------------------+ | Database | Create Database | +------------+------------------------------------------------------------------------------------------------+ | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ | +------------+------------------------------------------------------------------------------------------------+
3.查看yjdb資料表的編碼格式:
mysql> show create table yjdb; | yjdb | CREATE TABLE `yjdb` ( `sn` int(5) NOT NULL AUTO_INCREMENT, `type` varchar(10) NOT NULL, brc` varchar(6) NOT NULL, `teller` int(6) NOT NULL, `telname` varchar(10) NOT NULL, `date` int(10) NOT NULL, `count` int(6) NOT NULL, `back` int(10) NOT NULL, PRIMARY KEY (`sn`), UNIQUE KEY `sn` (`sn`), NIQUE KEY `sn_2` (`sn`) ) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |
問題二:PHP與Mysql傳輸編碼不相容
需要在PHP語句中加入
mysqli_query(“set names utf8”);
mysql set names 解決亂碼的原因:
http://blog.csdn.net/zsmj_2011/article/details/7943734
問題三:客戶端解碼問題:
加入header('charset=utf-8');即可
以上是解決php mysql中文亂碼問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!