我有以下脚本:
header('Content-type: text/plain; charset=utf-8');
$rq = "SELECT `name` FROM `mapamond_countries` WHERE `id` = 93";
$str = $db->GetAll($rq);
var_dump($str[0]['name']);
var_dump("شيلى");
字符串Ø'يٓى是从数据库(phpmyadmin)复制粘贴的。
首先是var_dump: string(25)“بٔجيكا“
第二个var_dump: string(8)“شيلى”
any1可以解释为什么会出现这种差异以及如何解决这个问题? DB collate,table collate和column collate是utf8_unicode_ci。
答案 0 :(得分:1)
尝试:
1-运行此查询ALTER DATABASE mydatabasename charset=utf8;
2次使用SET NAMES utf8
3次使用DEFAULT CHARSET=utf8
改变表格
ALTER TABLE `tableName` CHARACTER SET utf8;
答案 1 :(得分:0)
“ب”“جيكا”是“شيلى”的“双重编码”。从表中选择HEX(col)...看看你有什么。 “C398C2B4C399C5A0C399E2809EC399E280B0”是十六进制应为的双重编码值:“D8B4D98AD984D989”。 http://mysql.rjweb.org/doc.php/charcoll中讨论了双重编码。如果奥萨马的答案无法修复数据;阅读该博客和/或让我们进一步讨论这个问题。