MySQL / PHP - ударные символы, приводящие к возвращению неиспользуемых данных
Вот мой код...
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
mysql_set_charset('utf8');
$sql = "SELECT product_name FROM my_table";
$result = mysqli_query($mysqli, $sql) or trigger_error(mysql_error());
while($row = mysqli_fetch_assoc($result)) {
foreach($row as $key => $value) {
//here, $value is populated but may contain a bad character
$value = replaceAccents($value);
//here, $value is now empty if it contained a bad character
}
}
Я создал все свои таблицы с...
DEFAULT CHARSET=utf8
... и я также позвонил...
ALTER DATABASE my_database CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Большая часть данных возвращается из таблицы в порядке, но если любое поле содержит символ с акцентом (например, Crème
) затем возвращается неиспользуемое значение.
Я не видел подобной проблемы - только смутно похожие, которые привели к реализации вышеуказанного кода / изменений.
Что не так и как исправить??
Кстати, если я сделаю выше sql
искать в phpmyadmin
, проблемное значение (содержащее Crème
) отображается нормально.
Для полноты, вот моя функция replaceAccents...
function replaceAccents($str) {
$str = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $str);
return $str;
}