Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试PHP/HTML/MySQL中的非工作字符?_Php_Mysql_Html_Utf 8 - Fatal编程技术网

如何调试PHP/HTML/MySQL中的非工作字符?

如何调试PHP/HTML/MySQL中的非工作字符?,php,mysql,html,utf-8,Php,Mysql,Html,Utf 8,我正在用PHP和MySQL构建一个HTML网页,在运行该网页时遇到了瑞典字符ÄÖ的问题。他们表现为� 而不是Å/Ä/Ö 我已经在HTML元标记和PHP中将字符集设置为UTF-8: <?php header('Content-type: text/html; charset=UTF-8'); ?> <meta charset="UTF-8"> 此外,MySQL对所有表运行排序规则 所有文件也应编码并保存为UTF-8,无需Unicode签名(BOM)和规范

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

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

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

<meta charset="UTF-8">

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

所有文件也应编码并保存为UTF-8,无需Unicode签名(BOM)和规范化表单

所有这些以前都是完美无瑕的,但今天,无论我尝试做什么,最终都以失败告终� 而不是Å/Ä/Ö。有没有一个好的方法来调试它并发现问题

我的任何步骤都没有必要,或者我忘记了什么吗?

您需要的是关于集合名称的部分:

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

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

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


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

这是只针对少数记录还是所有带有瑞典语字符的记录

您可以在浏览器设置中手动更改页面编码-测试方法如下:将其更改为latin1/iso-8854-1,以查看是否正确显示错误为utf-8的页面编码

很可能有人正在使用不支持utf8的浏览器,或者手工修改编码


还要确保数据库连接也是utf8。(
设置名称utf8;

所有浏览器都会出现这种情况吗?您是否有任何方法来检查响应负责人是否真的是UTF-8?我在哪里使用
设置名称
?您不应该这样做,而是应该使用
mysql\u set\u charset
。我参考了这一部分:$pdo=newpdo('mysql:dbname=encoding_test;host=localhost','user','pass',array(pdo::mysql_ATTR_INIT_COMMAND=>'SET NAMES utf8');如果我没有正确理解您的文章,您能解释一下吗?对于PDO,可以使用它(尽管您应该在支持它的较新版本的连接字符串中指定字符集)。对于旧的
mysql\u
扩展,请使用
mysql\u set\u charset
。否则,mysql\u real\u escape\u string很容易出现问题,因为您在数据库级别更改编码,而没有正确地将更改通知PHP
mysql\ucode>函数。