某些字符无法使用UTF-8显示

时间:2011-04-02 03:05:56

标签: php mysql utf-8 character-encoding collation

我在使用斯拉夫语言时遇到问题,例如Š。当它们包含在输出中时,它们显示为菱形问号符号。

我的数据库连接使用以下命令设置为utf8:

@mysql_query("SET NAMES 'utf8_unicode_ci' COLLATE 'utf8_unicode_ci'");

大多数多语种角色出现在屏幕上。我不确定我是否正确设置了字符集。它似乎适用于匈牙利语,西班牙语,葡萄牙语,而不是斯拉夫语!

问题出在哪里?

该字段中包含大量可能的字符,这使得无法选择特定的非utf8字符集,如latin2。

这是一个全新的数据库,从头开始创建。 phpMyAdmin在屏幕上显示字符,所以我猜问题不是MySQL,而是PHP。但是,我已经设置了正确的utf8声明。

2 个答案:

答案 0 :(得分:3)

花费数小时检查并测试所有可能的区域。 最后我在这里找到了解决方案:

UTF-8 all the way through 最佳答案有帮助。

我的问题发现是“数据访问”。 使用

修复
$set_utf = mysql_query("SET NAMES 'utf8' ") 
          or die(mysql_error());      

希望它也可以帮助别人。

答案 1 :(得分:0)

尝试将'utf8_unicode_ci'替换为'utf8_general_ci'。

E.g。我用

@mysql_query("SET NAMES 'utf8_general_ci' COLLATE 'utf8_general_ci'");

显示我的网站上的特定字符来自塞尔维亚语拉丁语,例如šđčćž和塞尔维亚语西里尔语(абвгдђежзијклљмнњопрстћуфхцчџш)。我不知道这是否会导致您的问题,因为我从未使用过'utf8_unicode_ci'。

在原始问题中添加更多详细信息和一些代码。