1

我有以下脚本:

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 collat​​e、table collat​​e和column collat​​e是utf8_unicode_ci。

4

2 回答 2

1

尝试:

1-运行此查询 ALTER DATABASE mydatabasename charset=utf8;

2-SET NAMES utf8在进行任何查询之前使用

3-DEFAULT CHARSET=utf8创建新表时使用

改变表格

ALTER TABLE `tableName` CHARACTER SET utf8;
于 2015-02-25T14:29:36.927 回答
0

“بلجيكا”是“شيلى”的“双重编码”。SELECT HEX(col)... 从表中查看你有什么。“C398C2B4C399C5A0C399E2809EC399E280B0”是十六进制的双编码值:“D8B4D98AD984D989”。在http://mysql.rjweb.org/doc.php/charcoll中讨论了双重编码。如果奥萨马的回答未能修复数据;阅读该博客和/或让我们进一步讨论这个问题。

于 2015-02-25T23:06:26.083 回答