如何调试PHP/HTML/MMySQL中无法工作的字符


How do I debug not working characters in PHP/HTML/MySQL?

我正在用PHP和MySQL构建一个HTML网页,在运行页面时遇到了瑞典字符ÅïÖ的问题。他们显示为�而不是Å/É/Ö。

我已经在HTML元标记和PHP中将字符集设置为UTF-8:

<?php
    header('Content-type: text/html; charset=UTF-8'); 
?> 
<meta charset="UTF-8">

此外,MySQL对所有表运行utf8_general_ci排序规则。

所有文件也应该被编码并保存为UTF-8,没有Unicode签名(BOM),也没有规范化形式

所有这些以前都完美无瑕,但今天,无论我做什么,我都会失败�而不是Å/É/Ö。有没有一个好的方法来调试并找到问题?

是我的任何步骤都没有必要,还是我忘记了什么?

您需要从decze的文章中获得关于集合名称的部分:

mysql_set_charset('utf8', $connection); //not mysql_query("SET NAMES 'utf8'");

只需在php代码的开头添加它,在数据库连接启动后

您可以尝试将php文件保存为UTF-8编码。我假设这些文件是用其他东西写的(可能是ISO xxxx或ANSI)

要使用Notepad++执行此操作,请选择所有行并复制到剪贴板,在编码菜单中将编码更改为UTF-8而不带BOM,然后粘贴所有内容并保存。

这只适用于少数记录还是所有具有瑞典字符的记录?

你可以在浏览器设置中手动更改页面编码-这就是你测试它的方式:将其更改为latin1/iso-8854-1,看看它是否正确显示了错误的utf-8。

可能有人正在使用不支持utf8的浏览器,或者手动篡改了编码。

还要确保数据库连接也是utf8。(set names utf8;