php - 更新 php 破坏了德语 Codeigniter 1 站点中的 UTF-8 编码

标签 php codeigniter encoding utf-8

我继承了一个旧的 Codeigniter 1.0 网站,其中包含德语内容。精氨酸。

它在具有 php 5.2 和 MySQL 5.0 的服务器上运行。

更新服务器以使用 php 5.4 和 MySQL 5.5 导致字符编码下降 - 我假设 Codeigniter 正在通过某种过滤器运行数据库内容(这是正确的)。

例如,它现在显示ü,其中数据库有ü

一切都设置为UTF-8,并且网站本身没有任何变化,尽管数据库当然已经更新了。

有什么想法可以让我找出发生这种情况的地方并对其进行严厉的交谈吗?如果您有建议,请使用小词,因为我不太了解 codeigniter。 :-D

编辑1

我将 HTML 中的字符集设置为 utf-8 - 没有改变。
所有表都有排序规则:utf8_unicode_ci 在 config/database.php 中,我有: $db['default']['char_set'] = "utf8"; $db['default']['dbcollat​​'] = "utf8_general_ci";

编辑2 根据 Chococroc 的建议,我创建了一个测试 php 文件来直接从数据库中提取数据。这正确显示了德语字符,但帮助我意识到在数据库中,HTML 被存储为 HTML 实体 - &lt;p&gt;而不是<p>例如。

是否将这些实体转回 HTML 的同时也破坏了德语字符......?

最佳答案

好的,您已全部 checkin CodeIgniter config charset and UTF-8 support好吧,让我们深入了解 CI,根据这篇文章:http://www.jamipietila.fi/codeigniter-and-utf-8/有三个地方需要研究:

配置.php

$config['charset'] = "UTF-8";

数据库.php

$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

Controller : 添加此行

$this->output->set_header('Content-Type:text/html; charset=UTF-8');

如果没有任何效果,最后一次尝试:如果在完成所有这些操作之后,它仍然无法正常工作,请检查带有 PDO 的简单 PHP 文件,以转到 DDBB 并检索并输出结果。如果 utf-8 可以工作,那么它肯定是 CI 内部的东西。如果不是,那就是你的服务器的问题,当你更改为 PHP 5.4 时它不喜欢这样的东西

关于php - 更新 php 破坏了德语 Codeigniter 1 站点中的 UTF-8 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22537103/

相关文章:

.net - 从 Firebird 数据库中获取 ASCII 字符串

php - laravel 5.1 表示除了 ('/' 之外的所有其他路由)在使用 ec2 的在线亚马逊服务器上找不到 404 页面

javascript - 使 Ideone API 在 Codeigniter 上工作(ajax、javascript、soapclient)

php - utf8网站和latin1数据库表字段

javascript - 在 Yii2 中尝试通过 javascript 获取自动填充文本框时获取空值

php - 日历自定义 [突出当前月份]

php - codeigniter group by 不起作用

c# - XML Unicode 安全编码

java - 将图片从 Android java 应用程序上传到 Codeigniter

java - 如何计算字符串中字符组成的回文数?