期待大家幫忙,牛X你就來,PHP插入mysql亂碼,都設定了,還是不行解決方案
來源:互聯網
上載者:User
期待大家幫忙,牛X你就來,PHP插入mysql亂碼,都設定了,還是不行
PHP插入到mysql中的資料從終端到phpmyadmin瀏覽都是亂碼,大家幫忙分析
環境:LAMP
1.mysql編碼設定如下:
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
2. mysql 全域設定如下:
/etc/my.cnf
[client]
default-character-set='utf8'
[mysqld]
default-character-set='utf8'
3.PHP串連編碼設定如下:
function db_connect()
{
$result=new mysqli('IP','db','user','passwd');
mysql_query("SET NAMES 'UTF8'");
4. PHP頁面編碼設定如下:
能設定的都設定了,為什麼在phpmyadmin 與終端裡瀏覽還是亂碼!!!!!
PS: phpmyadmin 與終端裡也設定了編碼為UTF8
哪位朋友幫忙解決一下。成分感謝!
------解決方案--------------------
mysql在設定utf8的時候, 使用"utf8", 頁面上, 使用utf-8.
亂碼的解決需要一步一步的調試/觀察
首先, 查看你的頁面編碼, 在瀏覽器上看開啟你的頁面時瀏覽器使用的編碼格式..
然後, 從$_POST, $_GET中列印你提交的資料, 檢查前台向背景傳遞過程中, 編碼有沒有出問題
然後, 在向資料庫寫入之前檢查一下..
然後就是確定資料庫的編碼問題, 這個通常換個確認正確的用戶端來向資料庫寫入, 看資料庫的表現..
------解決方案--------------------
頁面是UTF-8
MYSQL裡是UTF8
注意不要搞錯。
另外,網頁其實可以不設,只要程式的編碼是UTF-8即可。
------解決方案--------------------
然後再用 EditPlus 3另存新檔utf-8類型.
mysql串連那裡:mysql_query('set names utf8');
------解決方案--------------------
探討
謝謝大家的協助,我用的mysqli串連資料庫,用 mysqli 的時候 mysql_query("SET NAMES 'UTF8'");不知道為什麼沒有起作用,用以下的沒有問題了
$result=new mysqli('localhost','root','','db');
$result->query("set names 'utf8'");
麻煩朋友們解答一下 $result->qu……
------解決方案--------------------
探討
一: 所有的utf8都換成utf-8
二:mysql_query("SET NAMES 'UTF8'");改成:mysql_query("SET NAMES `UTF-8`");
注意標點符號,是反引號 不是單引號