存储在我的数据库中的不同字符编码

时间:2011-10-12 15:31:51

标签: php mysql character-encoding

我遇到了一个讨厌的字符编码问题,并在寻找有关如何解决问题的想法。

过去几年我以latin1_swedish_ci格式维护了一个数据库。一切都很好。在PHPMyAdmin中检查varchars时,我可以看到像ë这样的重音符号,并在前端显示它们。

最近我将我的应用程序切换到UTF-8。我还将HTML页面的字符编码设置为UTF-8,但不是我的数据库。问题开始浮出水面。有时字符编码正确,有时不编码。

实际情况是,最近存储的varchars看起来很好,旧的varchars(在切换到UTF-8之前)显示为黑色方块。如果我将页面的字符编码切换到ISO8859-1,则会发生相反的情况。旧的特殊字符显示精细,新的特殊字符显示为黑色方块。

所以现实是我的数据库存储的特殊字符与以前不同。如何在不破坏东西的情况下清理这些混乱?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下内容:

$string = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);

$string = iconv("ISO-8859-1", "UTF-8//TRANSLIT", $string);

查看编码后的角色是否会改变。