1. 伺服器級,即 mysql.ini 的設定。
2. 資料庫級。
3. 資料表級。
4. 資料欄位級。
5. 連線校對級。
--------------------------------------------------------
一、設定:MySQL configuration file
LINUX 下可透過修改 /etc/my.cnf 檔案
Windows 下可透過修改 my.ini 檔案
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_unicode_ci'
skip-character-set-client-handshake
設定檔內加入「skip-character-set-client-handshake」是為了抑制MySQL內部自行進行變換。
[client]
default-character-set=utf8
Restart the MySQL
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
http://kosalads.blogspot.tw/2013/03/mysql-55-how-to-change-mysql-default.html
http://www.chou-it.com/info/infra/db/mysql_01.html
http://cameronyule.com/2008/07/configuring-mysql-to-use-utf-8/
--------------------------------------------------------
mysql_connect("localhost:3306","root","1234");
mysql_select_db("mytest");
mysql_query("set names 'utf8'");
$rs=mysql_query("select * from table_A");
print_r(mysql_fetch_row($rs));
mysql_close();
即完成資料庫連線,顯示資料以及中文編碼問題。
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_unicode_ci'
skip-character-set-client-handshake
設定檔內加入「skip-character-set-client-handshake」是為了抑制MySQL內部自行進行變換。
[client]
default-character-set=utf8
Restart the MySQL
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
http://kosalads.blogspot.tw/2013/03/mysql-55-how-to-change-mysql-default.html
http://www.chou-it.com/info/infra/db/mysql_01.html
http://cameronyule.com/2008/07/configuring-mysql-to-use-utf-8/
--------------------------------------------------------
二、創建資料庫時候直接指定編碼和排序規則
CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE TABLE `content` (
`id` int(11) NOT NULL auto_increment,
`language` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
--------------------------------------------------------
三、PHP程式
選取資料庫的後面及query()之前加上mysql_query("set names 'utf8'");
這樣一來就不用在每段查詢語法都要個別指定編碼,省事許多,mysql_connect("localhost:3306","root","1234");
mysql_select_db("mytest");
mysql_query("set names 'utf8'");
$rs=mysql_query("select * from table_A");
print_r(mysql_fetch_row($rs));
mysql_close();
即完成資料庫連線,顯示資料以及中文編碼問題。
http://www.dotblogs.com.tw/jellycheng/archive/2010/11/18/19535.aspx
--------------------------------------------------------
註解:
--------------------------------------------------------
註解:
SET NAMES UTF8 等於設定
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8
SET character_set_system utf8
SET character_set_server = utf8;
SET character_set_database = utf8;
SET collation_server = utf8_general_ci;
SET collation_database = utf8_general_ci;
--------------------------------------------------------
範例:
class DB_CONNECT {
function __construct() {
$this->connect();
}
function __destruct() {
$this->close();
}
// Function to connect with database
function connect() {
//require_once('db_config.php'); //Befor PHP 5.2
require_once __DIR__ . '/db_config.php'; //AFTER PHP 5.3
// Connecting to mysql database
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
// Selecing database
$db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
// 設定 UTF8
mysql_query('SET NAMES UTF8;');
// returing connection cursor
return $con;
}
function close() {
mysql_close();
}
}
$db = new DB_CONNECT();
$result = mysql_query("SELECT * FROM products") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
$response["products"] = array();
while ($row = mysql_fetch_array($result)) {
// temp user array
$product = array();
$product["pid"] = $row["pid"];
$product["name"] = $row["name"];
$product["price"] = $row["price"];
$product["description"] = $row["description"];
$product["created_at"] = $row["created_at"];
$product["updated_at"] = $row["updated_at"];
// product 放入 products array
array_push($response["products"], $product);
}
// success
$response["success"] = 1;
$encode = json_encode($response);
)