我有一个数据库,其中包含♥•â—♥ Dhaka ♥•â—♥
(应该是♥•●♥ Dhaka ♥•●♥
)等值,因为我在创建数据库时没有指定排序规则。
现在我想解决它。我无法从第一个地方获取数据再次获取数据。所以我在想是否有可能在php脚本中获取数据并将其转换为正确的字符
我已将数据库和字段的排序规则更改为utf8_general_ci
..
答案 0 :(得分:14)
排序规则与字符集不同。排序规则仅用于文本的排序和比较(这就是为什么有一个语言术语)。实际的字符集可能不同。
最常见的故障不是在数据库中,而是在PHP和MySQL之间的连接中。连接的默认字符集通常是ISO-8859-1。您需要使用SQL查询SET NAMES 'utf-8';
或mysql_set_charset函数更改connectiong之后的第一件事。
同时检查表格的字符集。如果您没有指定UTF-8开头(再次:这与排序规则不同),这也可能是错误的。但请确保在更改任何内容之前进行备份。 MySQL将尝试从前一个转换字符集,因此如果您已经在ISO-8859-1表中实际保存了UTF-8数据,则可能需要从备份重新加载数据。
答案 1 :(得分:3)
我会调查mb_detect_encoding()和mb_convert_encoding(),看看他们是否可以帮到你。