MySQL 之編碼篇
用 MySQL 資料庫最好弄清楚編碼設定的觀念來避免顯示亂碼的問題OK.蹦's 知識庫
MySQL
[url]http://leexuan.blogbus.com/s6278/[/url]
月夜火
MySQL 5 使用 UTF-8 配合 WordPress 的問題
[url]http://moonfire.twbbs.org/17[/url]
[encoding] MySQL 4.1.x SET NAMES UTF8
[url]http://blog.dragon2.net/archives/2005/10/24/228.php[/url] 無論任何 PHP 系統的前端或是後台已經是 UTF-8 的編碼格式
以及 MySQL 的設定檔 my.cnf 是如何的設定
只要是號稱 UTF-8 版本的系統
使用者還是要用指令去檢查 MySQL 連線後的 Server System Variables 狀態[code]show VARIABLES like 'char%'[/code]正確的結果是要[code]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/
[/code]而不是[code]character_set_client => latin1
character_set_connection => latin1
character_set_database => utf8
character_set_filesystem => binary
character_set_results => latin1
character_set_server => utf8
character_set_system => utf8
character_sets_dir => /usr/share/mysql/charsets/
[/code]另一個簡單的判斷方式就是使用 phpMyAdmin 瀏覽資料庫內的中文資料時不會有亂碼 MySQL Service 的設定檔 my.cnf 中有個 init_connect 設定可以讓連線跑參數
可能有人會設定成這樣
[mysqld]
init_connect='SET NAMES utf8'
但是這個參數[color=Red]在使用具有 super 權限的帳號(root 帳號就是)登入時是無效不會執行的[/color]
會有這樣的考量是當 init_connect 有錯誤的設定時有可能會導致無 super 權限的一般帳號無法連線
所以最佳的方式還是由 Client 端完成連線驗證後自行執行 SQL 語法 "SET NAMES 'utf8'"
頁:
[1]