woff 發表於 2008-12-27 00:49:41

PHP & MYSQL語系亂碼問題?

一般Linux設定MYSQL的語系是Latin1
可是我網頁PHP預設是UTF8
所以當PHP寫入資料庫時,繁體中文就會變成亂碼
要怎麼處理呢?可以設定下面設定檔
先去資料庫下檢查語法
用下列指令show variables like 'character_set_%';會秀出下列訊息+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)方法一.

找到MYSQL的設定檔
一般在 /etc/my.conf
加入下列文字

init_connect='SET NAMES utf8'
default-character-set=utf8
default-collation=utf8_general_ci
character_set_server=utf8

default-character-set=utf8並重新啟動MYSQL
/etc/init.d/mysql restart
並去MYSQL下檢查
show variables like 'character_set_%';看看改成功了嗎?如果設定成UTF8+--------------------------+----------------------------+
| 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)在PHP要寫入資料庫之前設定語法
下達下面指令
//宣告資料庫要寫入的格式
   mysql_query("SET NAMES utf8", $db);以後PHP寫入就不會亂碼了

方法二.
在PHP要寫入資料庫之前設定語法
下達下面指令
//宣告資料庫要寫入的格式
   mysql_query("SET NAMES Latin1", $db);再把資料讀出來看看,是不是已經正常了呢!

(p.s 以前建立的資料表因為還是以 latin1 作 default charset,所以無論怎樣讀/寫都還是亂碼,解決方法就是直接重新建立一次。我就是因為太仁慈 (懶?) 沒有 drop 掉舊的資料表,結果怎樣嚐試都失敗,windows platform 試的時候也被 mysql 騙了。)

s0n791006 發表於 2013-11-9 00:59:43

謝謝版主啊!

星與月 發表於 2013-11-9 00:59:43

拿分走人呵呵,樓下繼續!

pinkymini03 發表於 2013-11-9 00:59:43

努力~~各位。。。
頁: [1]
查看完整版本: PHP & MYSQL語系亂碼問題?