在phpmyadmin中,我使用utf8_unicode_ci编码存储了一些俄语值。它们在phpmyadmin中完美展示。
当我使用php获取这些值并且我尝试将它们放入选项的选项时出现问题,它们显示为“??????”。
我已经尝试将标头中的编码更改为iso-8859-1而不是utf-8,但它也不起作用。
我也试过
mb_convert_encoding($str, 'UTF-8', 'auto');
但没有变化:(
还有其他想法吗?
答案 0 :(得分:1)
如果您使用的是MySQL数据库/连接,请在运行查询之前使用mysql_query("SET NAMES 'utf8'");
,但更好的选择是mysql_set_charset()。
同时确保您拥有条目:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
在页面的标题部分。
如果您正在使用PDO,请将您的连接更改为:
$PDO_connection = new PDO("mysql:host=".$db['host'].";dbname=".$db['name'],
$db['user'], $db['pword'],
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
答案 1 :(得分:1)
我尝试将标头中的编码更改为iso-8859-1而不是utf-8
为什么?将支持俄语字符的正确编码更改为错误的编码有什么意义呢?
为了在您的页面上实现正确的编码,您必须做两件事:
mysql_set_charset('utf8')
(或其他库的类似功能,如果你使用的那个),其中utf8
是名称mysql术语中的编码。 Content-type
HTTP标头,使用header ('Content-type: text/html; charset=utf-8');
而不是其他内容。