php - 为什么我的 html 不显示从我的数据库中获取的特殊字符

标签 php html mysql collation

我将其包含在我的 php 文件的顶部:

<?php
    header('Content-Type: text/html; charset=UTF-8');
?>

我这样做是因为我的 file.php 没有在 html 文件或从我的数据库查询的数据中显示“á、é、í、ó、ú 或 ¿”。

在我放置'header('Content-Type: text/html; charset=UTF-8');'之后我的 html 页面的代码行开始理解 html 文件中的特殊字符,但是,从我的数据库收到的数据现在有一个带问号的黑色菱形。

我的数据库的排序规则是“utf8_spanish_ci”

在 html 标签中我尝试放置 lang=es 但这从来没有奏效 我还尝试将 meta 标签放在 head 标签中

<!DOCTYPE html>
<html lang=es>
<head>
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head>

我也试过:

<meta charset="utf-8">

和:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

不知道是什么问题。当我将数据直接插入数据库时​​,特殊字符就在那里,但是当我从我的 file.php 中插入它们时,它们会以随机字符出现。

有人知道为什么会这样吗?

最佳答案

发生这种情况的原因有很多。但是,重要的是您的整行代码都使用同一组字符集,并且所有可以设置为特定字符集的函数都设置为相同。使用最广泛的一种是 UTF-8,这是我建议您使用的一种。

连接

  • 您还需要在连接本身 中指定字符集。
    • PDO(在对象本身指定):
      $handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8"));
    • MySQLi:(创建连接后直接放置)
      * 对于 OOP:$mysqli->set_charset("utf8");
      * 对于程序:mysqli_set_charset($mysqli, "utf8");
      (其中 $mysqli 是 MySQLi 连接)
    • MySQL (depricated, 你应该转换成PDO或MySQLi): (创建连接后直接放置)
      mysql_set_charset("utf8");

数据库

  • 您的数据库 及其所有表都必须设置为 UTF-8。请注意,字符集与排序规则相同。

    您可以通过为每个数据库和表(例如在 phpMyAdmin 中)运行下面的查询一次来做到这一点

    ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

文件编码

  • 同样重要的是 .php 文件本身是 UTF-8 编码的。如果您使用 Notepad++ 编写代码,可以在任务栏上的“格式”下拉菜单中完成(转换为不带 BOM 的 UFT-8)。您应该使用 UTF-8 w/o BOM

如果您遵循以上所有指示,您的问题很可能会得到解决。如果没有,您可以查看这篇 StackOverflow 帖子:UTF-8 all the way through .

关于php - 为什么我的 html 不显示从我的数据库中获取的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33948902/

相关文章:

php - C++ PHP 桌面和 CEF 崩溃 LoadUrl()

php - 在 MySQL 中包含 $variable

php - 如何将多个 html 文件(其中包含 PHP 和 JS 代码)合并为 1 个大 html 文件

javascript - 带文字功能的动画

php 和 mysql - 插入有效但更新无效

javascript - Electron SQL 安全

php - 通过 php mysql jquery 每秒添加新行

html - 有没有办法将 HTML 导入 HTML 文件?

php - 验证电子邮件格式 PHP

mysql - 我应该添加多个索引吗?