我遇到了一个讨厌的字符编码问题,并在寻找有关如何解决问题的想法。
过去几年我以latin1_swedish_ci格式维护了一个数据库。一切都很好。在PHPMyAdmin中检查varchars时,我可以看到像ë这样的重音符号,并在前端显示它们。
最近我将我的应用程序切换到UTF-8。我还将HTML页面的字符编码设置为UTF-8,但不是我的数据库。问题开始浮出水面。有时字符编码正确,有时不编码。
实际情况是,最近存储的varchars看起来很好,旧的varchars(在切换到UTF-8之前)显示为黑色方块。如果我将页面的字符编码切换到ISO8859-1,则会发生相反的情况。旧的特殊字符显示精细,新的特殊字符显示为黑色方块。
所以现实是我的数据库存储的特殊字符与以前不同。如何在不破坏东西的情况下清理这些混乱?
答案 0 :(得分:1)
您可以尝试以下内容:
$string = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);
或
$string = iconv("ISO-8859-1", "UTF-8//TRANSLIT", $string);
查看编码后的角色是否会改变。