bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Database - 資料庫 MySQL MySQL 之編碼篇
查看: 5744|回復: 2
go

MySQL 之編碼篇 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2006-9-26 09:59 |只看該作者 |倒序瀏覽 |打印
用 MySQL 資料庫最好弄清楚編碼設定的觀念來避免顯示亂碼的問題

OK.蹦's 知識庫
MySQL
http://leexuan.blogbus.com/s6278/

月夜火
MySQL 5 使用 UTF-8 配合 WordPress 的問題
http://moonfire.twbbs.org/17

[encoding] MySQL 4.1.x SET NAMES UTF8
http://blog.dragon2.net/archives/2005/10/24/228.php
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

2#
發表於 2009-5-9 14:07 |只看該作者
無論任何 PHP 系統的前端或是後台已經是 UTF-8 的編碼格式
以及 MySQL 的設定檔 my.cnf 是如何的設定
只要是號稱 UTF-8 版本的系統
使用者還是要用指令去檢查 MySQL 連線後的 Server System Variables 狀態
  1. show VARIABLES like 'char%'
複製代碼
正確的結果是要
  1. character_set_client => utf8
  2. character_set_connection => utf8
  3. character_set_database => utf8
  4. character_set_filesystem => binary
  5. character_set_results => utf8
  6. character_set_server => utf8
  7. character_set_system => utf8
  8. character_sets_dir => /usr/share/mysql/charsets/
複製代碼
而不是
  1. character_set_client => latin1
  2. character_set_connection => latin1
  3. character_set_database => utf8
  4. character_set_filesystem => binary
  5. character_set_results => latin1
  6. character_set_server => utf8
  7. character_set_system => utf8
  8. character_sets_dir => /usr/share/mysql/charsets/
複製代碼
另一個簡單的判斷方式就是使用 phpMyAdmin 瀏覽資料庫內的中文資料時不會有亂碼
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

3#
發表於 2010-2-28 12:56 |只看該作者
MySQL Service 的設定檔 my.cnf 中有個 init_connect 設定可以讓連線跑參數

可能有人會設定成這樣

[mysqld]
init_connect='SET NAMES utf8'

但是這個參數在使用具有 super 權限的帳號(root 帳號就是)登入時是無效不會執行的
會有這樣的考量是當 init_connect 有錯誤的設定時有可能會導致無 super 權限的一般帳號無法連線

所以最佳的方式還是由 Client 端完成連線驗證後自行執行 SQL 語法 "SET NAMES 'utf8'"
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2025-5-2 06:21 , Processed in 0.015285 second(s), 12 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.