PHP 从 mysql 中选择时,字符串未转换为 utf 8
PHP string is not converted to utf 8 when selected from mysql
我有以下脚本:
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) "شيلى"
任何人都可以解释为什么会出现这种差异以及如何解决它吗?数据库整理、table 整理和列整理是 utf8_unicode_ci.
尝试:
1- 运行 这个查询 ALTER DATABASE mydatabasename charset=utf8;
2-在执行任何查询之前使用 SET NAMES utf8
3-在创建新的 tables
时使用 DEFAULT CHARSET=utf8
改变table
ALTER TABLE `tableName` CHARACTER SET utf8;
"بلجيكا" 是 "double encoding" 表示“شيلى”。 SELECT HEX(col)... 来自 table 看看你有什么。 "C398C2B4C399C5A0C399E2809EC399E280B0" 是十六进制的双重编码值:"D8B4D98AD984D989"。 http://mysql.rjweb.org/doc.php/charcoll 中讨论了双重编码。如果 Osama 的回答未能修复数据;阅读该博客 and/or 让我们进一步讨论这个问题。
我有以下脚本:
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) "شيلى"
任何人都可以解释为什么会出现这种差异以及如何解决它吗?数据库整理、table 整理和列整理是 utf8_unicode_ci.
尝试:
1- 运行 这个查询 ALTER DATABASE mydatabasename charset=utf8;
2-在执行任何查询之前使用 SET NAMES utf8
3-在创建新的 tables
时使用DEFAULT CHARSET=utf8
改变table
ALTER TABLE `tableName` CHARACTER SET utf8;
"بلجيكا" 是 "double encoding" 表示“شيلى”。 SELECT HEX(col)... 来自 table 看看你有什么。 "C398C2B4C399C5A0C399E2809EC399E280B0" 是十六进制的双重编码值:"D8B4D98AD984D989"。 http://mysql.rjweb.org/doc.php/charcoll 中讨论了双重编码。如果 Osama 的回答未能修复数据;阅读该博客 and/or 让我们进一步讨论这个问题。