標籤:des style http io color ar os for sp
最好的辦法:設定mysql伺服器的字元集,當然也可以通過mysql提供的api來設定運行時的字元集
Ideally a proper character set will be set at the server level, and doing this is described within the » Character Set Configuration section of the MySQL Server manual. Alternatively, each MySQL API offers a method to set the character set at runtime.
注意:字元集需要被設定,因為他會影響到每個請求的action,並且會影響到安全(如對mysqli_real_escape_string() ,mysql_real_escape_string(),PDO::quote())對這些函數產生影響。(用query設定的字元集,這些函數不會用到)
The character set and character escaping
The character set should be understood and defined, as it has an affect on every action, and includes security implications.
For example, the escaping mechanism (e.g., mysqli_real_escape_string() for mysqli, mysql_real_escape_string() for mysql, and PDO::quote() for PDO_MySQL) will adhere(堅持; 追隨; ) to this setting. It is important to realize that these functions will not use the character set that is defined with a query, so for example the following will not have an effect on them:
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
// Will not affect $mysqli->real_escape_string();
$mysqli->query("SET NAMES utf8");
// Will not affect $mysqli->real_escape_string();
$mysqli->query("SET CHARACTER SET utf8");
// But, this will affect $mysqli->real_escape_string();
$mysqli->set_charset(‘utf8‘);
?>
Below are examples that demonstrate how to properly alter the character set at runtime using each API.
Example #2 Setting the character set example: mysqli
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
if (!$mysqli->set_charset(‘utf8‘)) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
printf("Current character set: %s\n", $mysqli->character_set_name());
}
print_r( $mysqli->get_charset() );
?>
Example #3 Setting the character set example: pdo_mysql
Note: This only works as of PHP 5.3.6.
<?php
$pdo = new PDO("mysql:host=localhost;dbname=world;charset=utf8", ‘my_user‘, ‘my_pass‘);
?>
Example #4 Setting the character set example: mysql
<?php
$conn = mysql_connect("localhost", "my_user", "my_pass");
$db = mysql_select_db("world");
if (!mysql_set_charset(‘utf8‘, $conn)) {
echo "Error: Unable to set the character set.\n";
exit;
}
echo ‘Your current character set is: ‘ . mysql_client_encoding($conn);
?>
參考:http://php.net/manual/en/mysqlinfo.concepts.charset.php#mysqlinfo.concepts.charset
php串連資料庫時候的字元集設定