TShopping

 找回密碼
 註冊
搜索
查看: 2561|回復: 3

[教學] PHP & MYSQL語系亂碼問題?

[複製鏈接]
發表於 2008-12-27 00:49:41 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
一般Linux設定MYSQL的語系是Latin1
可是我網頁PHP預設是UTF8
所以當PHP寫入資料庫時,繁體中文就會變成亂碼
要怎麼處理呢?可以設定下面設定檔
先去資料庫下檢查語法
用下列指令
  1. show variables like 'character_set_%';
複製代碼
會秀出下列訊息
  1. +--------------------------+----------------------------+
  2. | Variable_name | Value |
  3. +--------------------------+----------------------------+
  4. | character_set_client | latin1 |
  5. | character_set_connection | latin1 |
  6. | character_set_database | latin1 |
  7. | character_set_filesystem | binary |
  8. | character_set_results | latin1 |
  9. | character_set_server | latin1 |
  10. | character_set_system | utf8 |
  11. | character_sets_dir | /usr/share/mysql/charsets/ |
  12. +--------------------------+----------------------------+
  13. 8 rows in set (0.00 sec)
複製代碼
方法一.

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

  1. [mysqld]
  2. init_connect='SET NAMES utf8'
  3. default-character-set=utf8
  4. default-collation=utf8_general_ci
  5. character_set_server=utf8
  6. [mysql]
  7. default-character-set=utf8
複製代碼
並重新啟動MYSQL
/etc/init.d/mysql restart
並去MYSQL下檢查

  1. show variables like 'character_set_%';
複製代碼
看看改成功了嗎?如果設定成UTF8
  1. +--------------------------+----------------------------+
  2. | Variable_name | Value |
  3. +--------------------------+----------------------------+
  4. | character_set_client | utf8 |
  5. | character_set_connection | utf8 |
  6. | character_set_database | utf8 |
  7. | character_set_filesystem | binary |
  8. | character_set_results | utf8 |
  9. | character_set_server | utf8 |
  10. | character_set_system | utf8 |
  11. | character_sets_dir | /usr/share/mysql/charsets/ |
  12. +--------------------------+----------------------------+
  13. 8 rows in set (0.00 sec)
複製代碼
在PHP要寫入資料庫之前設定語法
下達下面指令

  1. //宣告資料庫要寫入的格式
  2.    mysql_query("SET NAMES utf8", $db);
複製代碼
以後PHP寫入就不會亂碼了

方法二.
在PHP要寫入資料庫之前設定語法
下達下面指令

  1. //宣告資料庫要寫入的格式
  2.    mysql_query("SET NAMES Latin1", $db);
複製代碼
再把資料讀出來看看,是不是已經正常了呢!

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

 

臉書網友討論
發表於 2013-11-9 00:59:43 | 顯示全部樓層
謝謝版主啊!

版主招募中

發表於 2013-11-9 00:59:43 | 顯示全部樓層
拿分走人呵呵,樓下繼續!


發表於 2013-11-9 00:59:43 | 顯示全部樓層
努力~~各位。。。  


您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-11 10:21 , Processed in 0.057082 second(s), 19 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表