gpt4 book ai didi

php - PHP/MySQL 中的特殊字符

转载 作者:IT老高 更新时间:2023-10-28 23:51:47 24 4
gpt4 key购买 nike

我在数据库中有包含特殊字符的单词(主要是西类牙语,如波浪线)。在数据库中,所有内容都已保存并使用 PHPmyAdmin 正确显示,但是当我获取数据(使用 PHP)并将其显示在浏览器中时,我得到一个奇怪的字符,如“?”用一个正方形...我需要一个通用的修复程序,这样我就不需要每次都转义每个字符,而且我还可以将特殊的西类牙字符从 PHP 表单插入到数据库中......

HTML 是正确的:

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

所有表和数据库都设置为 utf8_spanish

我得到的字符:�

有什么建议吗???

谢谢!!!

最佳答案

我想提供更多关于vartec 提出的解决方案的详细信息。这是(取决于您的 MySQL 安装)对您的问题最正确的解决方案。首先,MySQL 中的字符集/编码问题是一个有点复杂的主题,在 MySQL 手册 Chapter 9.1 "Character Set Support" 中有广泛的介绍。 .在你的情况下,尤其是 9.1.4. "Connection Character Sets and Collations"将是最相关的。

简而言之:MySQL 必须知道您的客户端应用程序(从数据库 peroective 那是您的 PHP 脚本)所期望的字符集/编码,因为它会从定义的内部字符集/编码中转码所有字符串数据服务器级、数据库级、表级或列级进入连接字符集/编码。您在客户端使用 UTF-8,因此必须告诉 MySQL 您使用 UTF-8。这是通过 MySQL 命令 SET NAMES 'utf8' 完成的,该命令必须作为打开连接时的第一个查询发送。根据您的安装和您在 PHP 脚本中使用的 MySQL 客户端库,这可以在每次连接时自动完成。

如果您使用 PDO,只需设置配置参数即可

$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

使用mysqli更改客户端字符集/编码更加简单:

$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");

我希望这将有助于使整个事情更容易理解。

关于php - PHP/MySQL 中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/633762/

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