以utf_unicode_ci排序存储的多字节字符在网页上不能正确显示


Multibyte characters stored with utf_unicode_ci collation do not display correctly on web page

我已将VARCHAR(250)字段的排序设置为utf8_unicode_ci。我插入我的记录在phpMyAdmin与斯洛伐克字符,之后,当视图回到数据库中,它显示一切都很好。但是当我试图查询并从我的php脚本获得结果时,它向我显示"Pokutovanýsa rozhodne…"。我试图获得返回数据的字符代码,它真的是一个"?"字符,而不是浏览器字符集问题。此外,我也在我的页面"中呼应了这句话。没有成功。你知道怎么解决吗?

我使用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');
    }

我在使用CodeIgniter时遇到了类似的问题。在CI_DB_Driver类(/system/database/DB_Driver.php)中,有一个db_set_charset()函数在类初始化时被调用。我注释掉了函数调用,它解决了问题。