php - UTF-8 和 ISO-8859-1 : Why does it work for the most of the time and why sometimes not?

标签 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-script 中

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

但随后又出现了其他问题。

我想知道为什么 UTF-8 格式的数据在不应该显示的时候却“正确”显示。以及如何正确显示字母 č?

我觉得这个系统相当复杂。我在哪里以及如何查看这里出了什么问题?

最佳答案

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

关于php - UTF-8 和 ISO-8859-1 : Why does it work for the most of the time and why sometimes not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8247180/

相关文章:

php - 发生验证错误时 Symfony2 表单字段未更新

php - 未定义的类常量 'FECTH_ASSOC',无法获取关联数组中的选定行

php - 如何使用最后一页上设置的变量动态填充新页面?

php - 无法使用 laravel 和 vue js 运行 watch

php - 如何在 phpMyAdmin 中每天自动更新条目?

c# - 如何在 Linux 上的 C# 中安全地将字节数组转换为字符串(在单声道下)?

php - Unicode编码错误: 'ascii' codec can't encode characters in position 360-362: ordinal not in range(128)

php - 列出 linux 中的可用字体

php - Laravel - 如何从 Controller 设置 HTTP 响应状态代码

PHP select - 浏览器和二维码阅读器的不同值