使用utf8_encode和utf8_decode输出中的神秘字符

时间:2013-01-24 10:28:52

标签: php codeigniter utf-8 html-entities

我想打印从我的数据库中检索的许多国家/地区的字符串,但每次使用时我都会有一个神秘的字符:

utf8_encode($string); the out put is  (Algérie ,  Arménie ,Azerbaïdjan ,Biélorussie )
utf8_decode($string); -> (Algérie , Arménie , Azerba?djan , Bi?lorussie )
htmlentities($string); -> (Alg�©rie , Arm�©nie ,Azerbaïdjan, ... )

我试图放入标题:

header ("Content-Type:text/html;charset=ISO-8859-1"); ->Arménie , Azerbaïdjan

header ("Content-Type:text/html;charset=utf-8");  -> Azerba�djan

我已经检查了我的数据库的配置,我找到了

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

当您在已经解码的字符串上使用utf8_decode之类的东西或者对已经是UTF8的字符串进行编码时,有时会发生这种情况。如果这就是你正在做的事情,请尝试不编码/解码字符串以开始,然后看看输出是什么。

我自己在CodeIgniter中遇到了这个问题,对已经解码过的东西进行解码会使角色变得不稳定。

如果要从数据库中提取数据,请检查其中的表/字段的排序规则。