首頁 >後端開發 >PHP問題 >解決php mysql中文亂碼問題

解決php mysql中文亂碼問題

藏色散人
藏色散人原創
2020-11-05 09:59:192146瀏覽

php mysql中文亂碼的解決方法:1、修改資料庫或表格中的編碼格式;2、在PHP語句中加入「mysqli_query(“set names utf8”);」;3、在客戶端中加入“header('charset=utf-8');”即可。

解決php mysql中文亂碼問題

推薦:《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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn