Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 UTF-8和ISO-8859-1:为什么它大部分时间都能工作,有时又不能工作?_Php_Mysql_Encoding_Utf 8_Iso 8859 1 - Fatal编程技术网

Php UTF-8和ISO-8859-1:为什么它大部分时间都能工作,有时又不能工作?

Php UTF-8和ISO-8859-1:为什么它大部分时间都能工作,有时又不能工作?,php,mysql,encoding,utf-8,iso-8859-1,Php,Mysql,Encoding,Utf 8,Iso 8859 1,我有一个osCommerce 2.2 MST,它有一些自定义的附加功能。osCommerce本身在ISO-8859-1中。新增内容在MySQL数据库中有一个表,该数据库现在是utf8_general_ci(其他都是拉丁语1_瑞典语_ci)。我调用的php文件输出 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 在php脚本中,我还添加了 header('content-type: te

我有一个osCommerce 2.2 MST,它有一些自定义的附加功能。osCommerce本身在ISO-8859-1中。新增内容在MySQL数据库中有一个表,该数据库现在是utf8_general_ci(其他都是拉丁语1_瑞典语_ci)。我调用的php文件输出

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
在php脚本中,我还添加了

header('content-type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
header('content-type:text/html;charset=utf-8');
但随后出现了其他问题

我想知道的是,为什么UTF-8中的数据在不应该显示的情况下“正确”显示。如何正确显示字母č


我发现这个系统相当复杂。我不知道数据所经过的编码/解码顺序,但像ö、ä和ü这样的字母是正确的,而č不是,原因是ö、ä和ü可以在ISO-8859-1中编码,但č不能。您需要在HTML中使用UTF-8而不是ISO-8859-1来显示字符。

PHP字符集FAQ:另一个很棒的资源@hakre:Nice链接是一个很好的开始!谢谢我希望在我花几个小时寻找解决方案之前就有这个……记住“N'DUUH!”:永远不要使用UTF-8。我很久以前就试过了,但没有成功。我仍然得到
。但我也认为你是对的,因为č不在ISO-8859-1的字符集中。问题是这个定义在哪里?我可以添加头代码,但thanö和č不再工作。我使用
SET NAMES'utf8'
编辑客户端连接,但是其他很多东西都不起作用。是否可以在不更改所有查询的客户端连接的情况下执行此操作?是否可以只对一个查询执行此操作?如何确保我的数据在数据库中正确存储为UTF-8?如果我使用phpmyadmin进行查询,所有内容都会正确显示。phpMyAdmin也使用
,因此我认为数据是正确的。如果唯一出现问题的字符是č,那么您可以用字符转义序列替换生成的HTML中出现的每个字符:
č
和#x10D。(即使不止一个字符出现问题,如果没有太多,这可能是最简单的方法。)但我如何知道它是否是一个字符?查询的结果给了我一个
,这可能是一切…@测试-唯一的前进方向是使用UTF-8并找出HTML被编码为ISO-8859-1的原因。也许可以更新您的问题以显示生成文档的实际代码。
header('content-type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">