【问题标题】:phpmyadmin+php in russianphpmyadmin+php 俄语
【发布时间】:2011-10-06 11:35:24
【问题描述】:

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

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

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

我也试过

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

但没有变化:(

还有什么想法吗??

【问题讨论】:

    标签: php html utf-8 internationalization


    【解决方案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")
    

    【讨论】:

    • uk3.php.net/manual/en/function.mysql-set-charset.php - “不推荐使用 mysql_query() 执行 SET NAMES ..”。 - 你应该使用mysql_set_charset() - 这不是对“为什么是-1”的答案,因为我没有-1 你,只是建议更改你答案的mysql_query() 部分;)
    • 有这样的注释,虽然不可否认,+1 可能更清楚
    【解决方案2】:

    我尝试将标头中的编码更改为 iso-8859-1 而不是 utf-8

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

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

    1. 告诉数据库你期望你的数据采用什么编码。它应该使用mysql_set_charset('utf8')(或其他库的类似函数,如果你正在使用)其中utf8是编码的名称mysql 术语。
    2. 告诉浏览器您的页面采用什么编码方式。应该使用Content-type HTTP 标头,使用header ('Content-type: text/html; charset=utf-8'); 来完成。

    【讨论】:

    • 在任何人提出问题之前,是的,在数据​​库连接中设置它时“utf8”,在HTTP标头中设置“utf-8”:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多