phpmyadmin + php in Russian

时间:2011-10-06 11:35:24

标签: php html utf-8 internationalization

在phpmyadmin中,我使用utf8_unicode_ci编码存储了一些俄语值。它们在phpmyadmin中完美展示。

当我使用php获取这些值并且我尝试将它们放入选项的选项时出现问题,它们显示为“??????”。

我已经尝试将标头中的编码更改为iso-8859-1而不是utf-8,但它也不起作用。

我也试过

mb_convert_encoding($str, 'UTF-8', 'auto');

但没有变化:(

还有其他想法吗?

2 个答案:

答案 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

为什么?将支持俄语字符的正确编码更改为错误的编码有什么意义呢?

为了在您的页面上实现正确的编码,您必须做两件事:

  1. 告诉数据库您期望数据的编码。应该使用mysql_set_charset('utf8')(或其他库的类似功能,如果你使用的那个),其中utf8是名称mysql术语中的编码。
  2. 告诉浏览器您的网页编码是什么。应该使用Content-type HTTP标头,使用header ('Content-type: text/html; charset=utf-8');而不是其他内容。