gpt4 book ai didi

php - 使用 PHP 从 MySQL 读取克罗地亚语字母时出现问题?

转载 作者:行者123 更新时间:2023-11-29 06:35:10 24 4
gpt4 key购买 nike

我正在使用 PHP 和 MySQL 构建一个小型网站。

我在读取数据库时遇到问题。我可以对数据库执行所有操作,但是当我SELECT时从数据库中,我得到一些无效或错误表示的字符。

我得到:

Koriste?i kriminalisti?ku pri?u Dostojevski je sastavio roman kojim je predo?io svu slo�enost u odnosu pojedinca prema postoje?im zakonima.

但在数据库中我看到:

Koristeći kriminalističku priču Dostojevski je sastavio roman kojim je predočio svu složenost u odnosu pojedinca prema postojećim zakonima.

问题出在克罗地亚字母:Č Ć Ž Đ Š 。我认为问题出在 collation数据库。

有什么想法吗?

最佳答案

非英文字符令人头疼,但在过去几年中,处理它们变得更加容易。首先,确保数据库中的 varchar 和 text 列排序规则设置为 utf8mb4_unicode_ci

然后,您需要确保在查询数据库时是以 UTF8 格式进行查询。从 PHP 连接到 mySQL 服务器后、运行任何其他查询之前运行以下查询:

SET NAMES utf8mb4;

最后,确保您显示文本的页面也支持 UTF8。现在大多数浏览器都默认使用它,但为了安全起见,请在 HTML header 中设置以下标记:

<meta charset="utf-8">

如果您使用 mysqli,也许下面的代码片段会有所帮助:

# Set up the mysqli driver
$driver = new mysqli_driver();

# Report all errors
$driver->report_mode = MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ERROR;

# Try connecting
try {
$mysqli = new mysqli($_ENV['db_servername'],$_ENV['db_username'], $_ENV['db_password'], $_ENV['db_database']);
}
catch(mysqli_sql_exception $e) {
if ($mysqli->connect_error) {
die("[Error #{$mysqli->connect_errno}] {$mysqli->connect_error}");
} else {
die($e->getMessage());
}
}

# Ensure everything is UTF8mb4
$mysqli->set_charset('utf8mb4');

# Ensure PHP and mySQL time zones are in sync
$offset = (new \DateTime())->format("P");
$mysqli->query("SET time_zone='$offset';");

关于php - 使用 PHP 从 MySQL 读取克罗地亚语字母时出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54308198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com