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;
}

0 ответов

Другие вопросы по тегам