【问题标题】:PHP with MySQL can't handle UTF-8 encoding [duplicate]带有 MySQL 的 PHP 无法处理 UTF-8 编码 [重复]
【发布时间】:2022-01-01 18:31:47
【问题描述】:

如何使我的 PHP 脚本以正确的编码从 MySQL 中回显值?

目前,当数据库设置为如下所示的编码时,它返回如下面的屏幕截图所示。

【问题讨论】:

标签: php mysql utf-8


【解决方案1】:

如果您使用的是 PDO,请在创建 db 连接时指定字符集,如下所示:

$conn = new PDO("mysql:host=$host;dbname=$db;charset=utf8_czech_ci", $user, $pass);

如果您使用的是 mysqli,请使用以下内容:

$conn = mysqli_connect($servername, $username, $password, $dbname);

/* change character set to utf8_czech_ci */
mysqli_set_charset($conn,"utf8_czech_ci");
$mysqli->query("set names utf8_czech_ci");

【讨论】:

    【解决方案2】:

    有几个问题可能会导致这种情况(我自己也经历过同样的问题)

    如果只是您的数据库使用了错误的默认字符集,上述方法有效,您还必须将 PHP 和 HTML 标头设置为正确的编码。

    header('Content-Type: text/html; charset=utf-8');
    ini_set("default_charset", "UTF-8");
    mb_internal_encoding("UTF-8");
    iconv_set_encoding("internal_encoding", "UTF-8");
    iconv_set_encoding("output_encoding", "UTF-8");
    

    都可以影响它。看起来数据保存正确,所以这只是一个演示问题。如果没有更多信息,很难说它是 php、html 还是库问题,但以上内容几乎可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2019-09-12
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多