導航:首頁 > 編程語言 > phpmysql設置字元集

phpmysql設置字元集

發布時間:2025-07-28 21:31:36

php顯示MySQL數據亂碼,字元集設置都是UTF8,資料庫也是UTF8,一直找不到問題在哪裡,代碼見詳細,求大神

php+mysql的utf-8中文亂碼問題的解決方法
問題匯總:
1.mysql資料庫默認的編碼是utf8,如果這種編碼與你的PHP網頁不一致,可能就會造成MYSQL亂碼.
2.MYSQL中創建表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成MYSQL亂碼.
3.MYSQL創建表時添加欄位是可以選擇編碼的,如果這種編碼與你的網頁編碼不一致,也可能造成MYSQL亂碼.
4.用戶提交頁面的編碼與顯示數據的頁面編碼不一致,就肯定會造成PHP頁面亂碼.
5.如用戶輸入資料的頁面是big5碼, 顯示用戶輸入的頁面卻是gb2312,這種100%會造成PHP頁面亂碼.
6.PHP頁面字元集不正確.
7.PHP連接MYSQL資料庫語句指定的編碼不正確.
使用mysql+php產生亂碼的原因都了解得很清楚了,那麼解決就不困難了.
針對不同問題的解決方法:
1.mysql資料庫默認的編碼是utf8,如果這種編碼與你的PHP網頁不一致,可能就會造成MYSQL亂碼.
修改資料庫編碼,如果是資料庫編碼不正確,可以在phpmyadmin 執行如下命令:
Alter DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

以上命令就是將test資料庫的編碼設為utf8.
2.MYSQL中創建表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成MYSQL亂碼.
修改表的編碼:
Alter TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

以上命令就是將一個表category的編碼改為utf8.
3.MYSQL創建表時添加欄位是可以選擇編碼的,如果這種編碼與你的網頁編碼不一致,也可能造成MYSQL亂碼.
修改欄位的編碼:
Alter TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

以上命令就是將test表中 dd的欄位編碼改為utf8.
4.用戶提交頁面的編碼與顯示數據的頁面編碼不一致,就肯定會造成PHP頁面亂碼.
如果是這種情況容易解決,只需檢查下頁面,修改源文件的charset即可.
5.如用戶輸入資料的頁面是big5碼, 顯示用戶輸入的頁面卻是gb2312,這種100%會造成PHP頁面亂碼.
這種情況也是修改頁面charset即可.
6.PHP頁面字元集不正確.
為了避免PHP頁面亂碼的發生,PHP頁面開始第一句
header("content-type:text/html; charset=utf-8");

//強行指定頁面的編碼,以避免亂碼

7.PHP連接MYSQL資料庫語句指定的編碼不正確.
在連接資料庫的語句中.
mysql_connect('localhost','user','password');

mysql_select_db('my_db');
mysql_query("set names 'utf8'"); //select 資料庫之後加多這一句

㈡ php+mysql資料庫中文連接亂碼set names utf8 也不行!

MySQL會出現中文亂碼的原因不外乎下列幾點:
1.server本身設定問題,安裝時使用的字元集是latin1
2.table的語系設定問題(包含character與collation)
3.客戶端程式(例如php)的連線語系設定問題
正如您設定的一樣,建議使用UTF8,可兼容一切字元。以下為解決辦法:
一、避免創建資料庫及表出現中文亂碼和查看編碼方法
1、創建資料庫的時候:CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
2、建表的時候 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
即建庫和建表時都使用相同的編碼格式。
但是如果你已經建了庫和表可以通過以下方式進行查詢。

執行SET NAMES utf8的效果等同於同時設定如下:
SET character_set_client='utf8';
SET character_set_connection='utf8';
SET character_set_results='utf8';
二、避免導入數據有中文亂碼的問題
1:將數據編碼格式保存為utf-8
設置默認編碼為utf8:set names utf8;
設置資料庫db_name默認為utf8:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
設置表tb_name默認編碼為utf8:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
導入:LOAD DATA LOCAL INFILE 'C:\\utf8.txt' INTO TABLE yjdb;
2:將數據編碼格式保存為ansi(即GBK或GB2312)
設置默認編碼為gbk:set names gbk;
設置資料庫db_name默認編碼為gbk:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
設置表tb_name默認編碼為gbk:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
導入:LOAD DATA LOCAL INFILE 'C:\\gbk.txt' INTO TABLE yjdb;
註:1.UTF8不要導入gbk,gbk不要導入UTF8;
2.dos下不支持UTF8的顯示;
三、解決網頁中亂碼的問題
將網站編碼設為 utf-8,這樣可以兼容世界上所有字元。如果網站已經運作了好久,已有很多舊數據,不能再更改簡體中文的設定,那麼建議將頁面的編碼設為 GBK, GBK與GB2312的區別就在於:GBK能比GB2312顯示更多的字元,要顯示簡體碼的繁體字,就只能用GBK。
1.編輯/etc/my.cnf,在[mysql]段加入default_character_set=utf8;
2.在編寫Connection URL時,加上?useUnicode=true&characterEncoding=utf-8參;
3.在網頁代碼中加上一個"set names utf8"或者"set names gbk"的指令,告訴MySQL連線內容都要使用utf8或者gbk。
希望對你有所幫助。

㈢ php創建mysql數據表,怎麼選擇UTF8字元集

一、轉碼失敗
在數據寫入到表的過程中轉碼失敗,資料庫端也沒有進行恰當的處理,導致存放在表裡的數據亂碼。
針對這種情況,前幾篇文章介紹過客戶端發送請求到服務端。
其中任意一個編碼不一致,都會導致表裡的數據存入不正確的編碼而產生亂碼。
比如下面簡單一條語句:
set @a = "文本字元串";
insert into t1 values(@a);

閱讀全文

與phpmysql設置字元集相關的資料

熱點內容
什麼音樂app比較好用 瀏覽:217
韓漫要下哪個app才能看到 瀏覽:674
上海電氣壓縮機泵業 瀏覽:369
不戰而勝pdf 瀏覽:196
安卓10如何用ex模擬器 瀏覽:92
寶寶巴士安卓下載文件夾 瀏覽:364
phpsetdate 瀏覽:255
阿里雲伺服器管理器 瀏覽:38
sha256演算法java 瀏覽:980
深圳美女程序員 瀏覽:853
賣房哪個app最好2020 瀏覽:398
美間app怎麼設計 瀏覽:558
循序漸進學java韓順平 瀏覽:162
在哪個app可以看到自己是什麼臉 瀏覽:163
筏板內柱子周圍鋼筋加密 瀏覽:634
java怎麼編譯成class 瀏覽:710
遠程桌面雲伺服器知道Ip嗎 瀏覽:456
看程序員免費網站29集 瀏覽:30
加密狗價值多少錢 瀏覽:736
招商銀行app怎麼預留手機號 瀏覽:936