我正在将项目从名为“Freekore”的CMS迁移到CodeIgniter,使用我的旧CMS我没有遇到此问题但是CI我无法弄清楚为什么我遇到特殊字符问题{{1等等
我想我已经尝试了一切。
我在标题中得到了这个
ñ,á,é,í
还添加了这个
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
数据库配置
<?php header('Content-Type: text/html; charset=UTF-8'); ?>
和配置文件
$db['local']['char_set'] = 'utf8';
$db['local']['dbcollat'] = 'utf8_general_ci';
但我还是得到了这个
$config['charset'] = 'UTF-8';
而不是
COMUNICACIÓN Y PRODUCCIÓN EDITORIAL
啊,并将此添加到.htaccess
COMUNICACIÓN Y PRODUCCIÓN EDITORIAL
修改
使用this我发现当前字符集是AddDefaultCharset UTF-8
但是怎么样?我检查了数据库和表格,并且latin1
编辑2
我做了一个新的数据库并检查了每个列的排序规则,现在我在数据库,每个表和行上使用utf8_general_ci
,但我仍然有同样的问题当前字符集是{{1 }}
编辑3
我决定使用utf8_unicode_ci
似乎工作但我仍然有大写字母的问题
答案 0 :(得分:1)
在使用此函数将数据放入新数据库之前,您是否尝试使用UTF-8对数据进行编码:http://www.w3schools.com/php/func_xml_utf8_encode.asp
答案 1 :(得分:1)
在数小时内搜索可帮助我解决问题的内容后,我发现答案非常简单in this post所以在执行插入之前我使用了此mysql_query("SET NAMES utf8");
,现在字符显示为应有的。非常感谢你的帮助。
答案 2 :(得分:0)
数据库表本身的排序规则不是UTF-8 unicode。在这里查看例如phpmyadmin:
您需要更新排序规则。如果您没有phpmyadmin,可以使用以下命令:
ALTER TABLE `test_table` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
答案 3 :(得分:0)
我认为您需要将数据库集合更改为UTF 8 执行以下查询。
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
希望它能解决你的问题。
答案 4 :(得分:0)
您的问题很可能是utf8_general_ci
(MySQL 5.x默认值)作为整理。大多数人都对所有UTF8都不一样感到惊讶。在大多数情况下,你有3种一般的“味道”
区别在于UTF8使用了多少字节。 utf8mb4
是完整的UTF8字符集,而utf8_general_ci
是涵盖大多数拉丁字符集的小子集,但可能不包括您提到的字符。如果您切换到utf8_unicode_ci
,则可能会覆盖它们。问题在于,您使用的字节越多,数据库在处理数据时运行的速度就越慢。
该主题更详细地讨论了它。 What's the difference between utf8_general_ci and utf8_unicode_ci
答案 5 :(得分:0)
Echo utf8_encode($ row ['$ your_field']);