In my database I have an entry CARIÑO
when I select it in database I get CARIÃO
showing when I inspect element in browser. When I try to save it again in database I get error saying:
SQLSTATE[HY000]: General error: 1366 Incorrect string value:
'\xC2\x91O'
for column I want to know how to fix this error in a way that it will showCARIÑO
in browser and be saved again asCARIÑO
into database.
In my database connection I have:
$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);
I used sample in stackoverflow.com/questions/279170/utf-8-all-the-way-through for using the mysql:charset=utf8mb4
And in my select I have:
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);
}
The database I select from is ms sql server.
UPDATE:
After running from 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