dongshi2458 2014-10-27 19:23
浏览 33

MySQL / PHP - 重音字符导致返回不可用的数据

Here is my code...

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

I have created all my tables with...

DEFAULT CHARSET=utf8 

...and I have also called...

ALTER DATABASE my_database CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Most data is returned fine from the table, but if any field contains an accented character (e.g., Crème) then an unusable value is returned.

I haven't seen a problem like this - only vaguely similar ones, which have led to the above code / changes being implemented.

What is going wrong and how to fix??

Incidentally, if I do the above sql search in phpmyadmin, the problematic value (containing Crème) displays fine.

For completeness, here is my replaceAccents function...

function replaceAccents($str) {

    $str = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $str);

    return $str;
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
    • ¥15 关于#hadoop#的问题