在我的数据库中有一个条目
CARIÃO
当我在数据库中选择它时,我得到
CARIÃO
在浏览器中检查元素时显示。当我再次尝试将其保存到数据库中时,我收到错误消息,说:
SQLSTATE[HY000]:一般错误:1366不正确的字符串值:
'\xC2\x91O'
对于列
我想知道如何以它将显示的方式修复此错误
CARIÃO
并再次另存为
卡里奥
进入数据库。
在我的数据库连接中,我有:
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'mysql:charset=utf8mb4');
//Establishes the connection
$this->_connection = new PDO("sqlsrv:Server=IP;Server=$serverName,1433; Database=".DB_NAME."",DB_USER,DB_PASS,$options);
我在中使用了样本
stackoverflow.com/questions/279170/utf-8-all-the-way-through
mysql:charset=utf8mb4
在我的选择中,我有:
while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) {
// $selected_row['column'] = $column;
//echo $selected_row['patlast'];//this ouputs CARIÃO
$rows1[] = array_map('utf8_encode', $selected_row);
$rows[] = array_map('utf8_encode', $selected_row);
}
我从中选择的数据库是ms sql server。
UPDATE:
here
:
mb_detect_encoding($selected_row['patlast'], mb_detect_order(), true) === 'UTF-8' ? $content= $selected_row['patlast'] : $content= mb_convert_encoding($selected_row['patlast'], 'UTF-8');
echo "patlast: ".$content; // i get patlast: CARIÃâO
echo "mb_detect_encoding: ". mb_detect_encoding($selected_row['patlast'], mb_detect_order(), true);//i get mb_detect_encoding: UTF-8