【发布时间】:2022-01-01 18:31:47
【问题描述】:
【问题讨论】:
-
听起来像两个问题。计划“问号”源于一个原因; “黑钻”来自另一个。两者都在这里讨论:stackoverflow.com/questions/38363566/…
【问题讨论】:
如果您使用的是 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");
【讨论】:
有几个问题可能会导致这种情况(我自己也经历过同样的问题)
如果只是您的数据库使用了错误的默认字符集,上述方法有效,您还必须将 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 还是库问题,但以上内容几乎可以解决问题。
【讨论】: