使用utf_unicode_ci排序规则存储的多字节字符无法在网页上正确显示

时间:2011-11-10 23:14:02

标签: php mysql html codeigniter utf-8

我已将VARCHAR(250)字段的整理设置为utf8_unicode_ci。我在phpMyAdmin中使用斯洛伐克语字符插入我的记录,然后在数据库中查看时,它显示一切正常。但当我尝试查询并从我的PHP脚本中获取结果时,它显示我“Pokutovanýsarozhodne ......”。我试图获取返回数据的字符代码,它真的是一个“?”字符而不是浏览器字符问题。此外,我还在我的页面“”中回应了这一行。没有成功。任何想法如何解决它。

我正在使用CodeIgniter和MySQL。在我的配置文件

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

在数据库配置文件中我有

$db['default']['dbcollat'] = 'utf8_unicode_ci';

在控制器中:

class Welcome extends CI_Controller {

    function __construct()
    {
        parent::__construct();

        $this->load->library('pagination');
        //echo $this->session->userdata('AppLanguage');
        $this->config->set_item('language', $this->session->userdata('AppLanguage'));
        $this->output->set_header('Content-Type: text/html; charset=utf-8');
    }

1 个答案:

答案 0 :(得分:0)

前一段时间我与CodeIgniter有类似的问题。在CI_DB_Driver类(/system/database/DB_Driver.php)中,有一个db_set_charset()函数在初始化类时调用。我注释掉了函数调用,它修复了问题。