我将其包含在我的 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 但这从未起作用 我还尝试将元标签放入 head 标签内
<!DOCTYPE html>
<html lang=es>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head>
我也尝试过:
<meta charset="utf-8">
and:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
我不知道问题是什么。当我将数据直接插入数据库时,特殊字符就在那里,但是当我从 file.php 插入它们时,它们会显示为随机字符。
有谁知道为什么会发生这种情况?
发生这种情况的原因有几个。然而,重要的是您的整行代码使用相同的字符集集,并且可以设置为特定字符集的所有函数都设置为相同的。使用最广泛的一种是 UTF-8,我建议您使用它。
联系
- You also need to specify the charset in the connection itself.
-
PDO(在对象本身中指定):
$handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8"));
-
MySQLi:(创建连接后直接放置)
* 对于面向对象编程:$mysqli->set_charset("utf8");
* 对于程序:mysqli_set_charset($mysqli, "utf8");
(where $mysqli
是 MySQLi 连接)
-
MySQL (已弃用,您应该转换为 PDO 或 MySQLi):(在创建连接后直接放置)
mysql_set_charset("utf8");
Database
-
Your database并且其所有表都必须设置为 UTF-8。请注意,字符集是not与整理相同。
您可以通过运行下面的查询来做到这一点once对于每个数据库和表(例如在 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 的 UTF-8)。你应该使用UTF-8 w/o BOM
.
如果您遵循上述所有指示,您的问题很可能会得到解决。如果没有,你可以看看这个 StackOverflow 帖子:全程UTF-8.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)