Вот мой код …
$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;
}
Задача ещё не решена.
Других решений пока нет …