我继承了一个旧的 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 实体 - <p>
而不是<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/