Qussion問題描述: 特殊字元寫到DB會變成亂碼 or ?問號
範例問題字碼: 字碼「é」會存成「é」不知有碰過類似的問題嗎?
Answer解答1: 如果您使用的PHP + PDO 連線 + Mysql, 可用此方式. 在DB連線的Config設定中加上這行'SET NAMES UTF8' 實際程式範例如下:
// This is PDO Connection Method
// Connect to Potato Member Center
$HOST_DB="xxx.rds.amazonaws.com";
$DB_NAME="xxx";
$DB_USER="xxx";
$DB_PASS="xxx";
try {
$db_conn = new PDO("mysql:host=$HOST_DB;dbname=$DB_NAME", $DB_USER, $DB_PASS);
$db_conn->query('SET NAMES UTF8'); // 重要,可避免呈現亂碼.
} catch (PDOException $e) {
echo "Could not connect to database";
}
Answer解答2: 您可以在寫入DB資料前加上此函式htmlentities( $str , ENT_QUOTES, "UTF-8"),如此即可以正確將字碼轉成UTF-8再儲存至DB即可。
Reference參考:
1. PHP htmlentities() 函数
http://www.w3school.com.cn/php/func_string_htmlentities.asp
http://php.net/manual/en/function.htmlentities.php
George Huang 烤蕃薯@Taipei 2016
沒有留言:
張貼留言