【问题标题】:UTF-8 problems PHP/MySQLUTF-8 问题 PHP/MySQL
【发布时间】:2011-06-05 03:44:06
【问题描述】:

我一直使用 ISO-8859-1 编码,但我现在改用 UTF-8。

很遗憾,我无法让它工作。

我的 MySQL 数据库是 UTF-8,我的 PHP 文档是用 UTF-8 编码的,我设置了一个 UTF-8 字符集,但它仍然不起作用。

(它是 æ/ø/å 这样的特殊字符不起作用)

希望大家帮忙!

【问题讨论】:

标签: php mysql utf-8


【解决方案1】:

确保与您的数据库的连接也使用此字符集:

$conn = mysql_connect($server, $username, $password);
mysql_set_charset("UTF8", $conn);

根据mysql_set_charset在php.net的文档:

Note:
This is the preferred way to change the charset. Using mysql_query() to execute 
SET NAMES .. is not recommended.

另请参阅:http://nl3.php.net/manual/en/function.mysql-set-charset.php

检查当前连接的字符集:

echo mysql_client_encoding($conn);

另见:http://nl3.php.net/manual/en/function.mysql-client-encoding.php

如果您已完成这些操作并向您的表格添加奇怪的字符,您会看到它显示正确。

【讨论】:

  • 请注意,从 PHP 5.5.0 开始,mysql_set_charset 已弃用,请参阅 php.net/manual/en/function.mysql-set-charset.php。作为参考,该页面声明:警告此扩展自 PHP 5.5.0 起已弃用,并将在未来删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。
  • mysqli_set_charset($con,"utf8"); (w3school)
【解决方案2】:

记得将连接编码也设置为 utf8。

在 ext\mysqli 中做 $mysqli->set_charset("utf8")

在 ext\mysql 中做 mysql_set_charset("utf8")

使用其他数据库扩展,您可能必须运行查询,例如 SET NAMES 'utf8'

Some more details about connection encoding in MySQL

正如其他人指出的那样,确保您的源代码是 utf-8 编码也有帮助。特别注意没有 BOM(字节顺序标记) - 它会在任何代码执行之前发送到浏览器,因此使用标题或会话将变得不可能。

【讨论】:

    【解决方案3】:

    连接到 db 后,运行查询 SET NAMES UTF8

    $db = new db(...);
    $db->query('set name utf8');
    

    并将此标签添加到标题

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    

    【讨论】:

    • 这个 http-surrogate 没有任何帮助。为什么不发送 original HTTP 标头?
    【解决方案4】:

    你有这个错误吗? MySql SELECT UNION 非法混合排序规则错误?只需将整个 mysql 设置为 utf 8 即可

    SET character_set_connection = utf8;
    

    【讨论】:

      【解决方案5】:

      连接mysql后试试这个:

      mysql_query("SET NAMES 'utf8'");
      

      并以 UTF-8 无 BOM 对 PHP 文档进行编码。

      【讨论】:

        【解决方案6】:

        我有同样的问题,但现在解决了。这是解决方案:

        第一:更新你的表 更改表 tbl_name 默认字符集 utf8 整理 utf8_general_ci;

        第二: 在 HTML 代码的 head 部分添加:

        问候 Saleha A.Latif

        【讨论】:

          【解决方案7】:

          现在 PDO 是使用 mysql 的推荐方式。有了它,您应该使用连接字符串来设置编码。例如:“mysql:host=$host;dbname=$db;charset=utf8”

          【讨论】:

            猜你喜欢
            • 2012-04-11
            • 2011-11-30
            • 1970-01-01
            • 2010-12-15
            • 1970-01-01
            • 2011-04-02
            • 1970-01-01
            • 2017-03-07
            • 2012-03-11
            相关资源
            最近更新 更多