這篇文章給大家分享的是有關php mysql中文亂碼怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
php mysql中文亂碼的解決辦法:1、修改數據庫或表中的編碼格式;2、在PHP語句中加入“mysqli_query(“set names utf8”);”;3、在客戶端中加入“header(‘charset=utf-8’);”即可。
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中文亂碼怎么辦就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。