使用PHP将latin1_swedish_ci转换为utf8

时间:2011-07-11 07:23:54

标签: php mysql character-encoding

我有一个数据库,其中包含♥•â—♥ Dhaka ♥•â—♥(应该是♥•●♥ Dhaka ♥•●♥)等值,因为我在创建数据库时没有指定排序规则。
现在我想解决它。我无法从第一个地方获取数据再次获取数据。所以我在想是否有可能在php脚本中获取数据并将其转换为正确的字符 我已将数据库和字段的排序规则更改为utf8_general_ci ..

2 个答案:

答案 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(),看看他们是否可以帮到你。