开发者社区> 问答> 正文

PHP / MySQL中的特殊字符?mysql

我在数据库中有包含特殊字符的单词(大多数情况下为西班牙语,如波浪号)。在数据库中,所有内容均已保存并使用PHPmyAdmin正确显示,但是当我获取数据(使用PHP)并将其显示在浏览器中时,我得到了一个奇怪的字符,例如“?”。用一个正方形...我需要一个一般性的修补程序,因此我不必每次都转义每个字符,而且我还可以将PHP表单中的特殊西班牙字符插入数据库中...

HTML是正确的:

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

我得到的角色:

有什么建议么???

谢谢!!!

展开
收起
保持可爱mmm 2020-05-17 14:19:59 915 0
1 条回答
写回答
取消 提交回答
  • 我只想提供有关vartec提出的解决方案的更多详细信息,这是(取决于您的MySQL安装)最适合您的问题的解决方案。首先,MySQL中的字符集/编码问题是一个有点复杂的主题,MySQL手册第9.1章“字符集支持”对此进行了广泛讨论。在您的情况下,尤其是9.1.4。“连接字符集和排序规则”将是最相关的。

    简而言之:MySQL必须知道客户端应用程序期望使用哪种字符集/编码(从与您的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"); 我希望这将有助于使整个事情更容易理解。来源:stack overflow

    2020-05-18 11:12:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像