UTF-8和ISO-8859-1:为什么它在大多数时间都有用,有时为什么不工作?

时间:2011-11-23 18:19:34

标签: php mysql encoding utf-8 iso-8859-1

我有一个osCommerce 2.2 MST,它有一些自定义添加。 osCommerce本身在ISO-8859-1中。添加在MySQL数据库中有一个表,现在在utf8_general_ci中(其他都在latin1_swedish_ci中)。我正在调用输出的php文件

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

正如我之前提到的,数据库中的数据是UTF-8。但是ö,ä,ü等字母显示正确。怎么会这样?应该没有utf8_decode。但字母č显示为?。我直接得到这个结果数组。如果我使用phpmyadmin进行查询,则显示正确。

我设法显示所有字母都正确显示(仅在脚本的一个部分中)。这就是我所做的

mysql_query("SET NAMES 'utf8'"); 

在php脚本中我也添加了

header('content-type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

然后发生了其他问题。

我想知道为什么UTF-8中的数据应该“正确”显示为什么不应该。如何才能正确显示字母??

我认为系统相当复杂。我在哪里以及如何看待这里有什么问题?

1 个答案:

答案 0 :(得分:2)

我不知道您的数据经过的编码/解码顺序,但是ö,ä和ü等字母正确的原因,而č不是,是ö,ä和ü可以是以ISO-8859-1编码,但č不能。您需要在HTML中使用UTF-8而不是ISO-8859-1才能显示č。