gpt4 book ai didi

php - É 而不是 "é",绝对不知道为什么

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

我有一个网站显示 É 字符而不是“é”。

我找到了这个帖子 UTF-8 all the way through这很好,但对我没有帮助。我不明白为什么。

数据是从 Mysql 数据库中提取的。显示变量给出:

character_set_client : utf8
character_set_connection : utf8
character_set_database : utf8
character_set_filesystem : binary
character_set_results : utf8
character_set_server : utf8
character_set_system : utf8
character_sets_dir : /usr/share/mysql/charsets/
collation_connection : utf8_unicode_ci
collation_database : utf8_general_ci
collation_server : utf8_general_ci

我的 php Header + PDO::connexion 代码如下,将 utf-8 设置为字符集:

<!DOCTYPE HTML>
<html>
<head>
<?php header("Content-type: text/html; charset=utf-8"); ?>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
$db = new PDO( 'mysql:host=host.mysql.db;dbname=dbname;charset=utf8', 'user', '');
$db->exec('SET NAMES utf8');

然后我的 PDO:query 代码如下,我没有指定字符集,但我不明白为什么/如何去做:

$query="SELECT * FROM db where rank = 1 limit 30";
$req = $db->query($query) or die(print_r($db->errorInfo(), true));
$req->setFetchMode(PDO::FETCH_ASSOC);
$data1 = array();
$data1 = $req->fetchAll();

最后我打印数据,给出 É 个字符。

<?php for($i = 0; $i < 5; ++$i):
$title = utf8_encode($data1[$i]['title']);
echo mb_check_encoding($title, "UTF-8"); // prints 1 (True)
echo $title; // prints é

注意:如果我在“数据”上使用“utf8_decode()”而不是“utf8_encode()”,我会得到 � 个字符。

我正在使用 Notepad++,我的文件编码为“没有 BOM 的 UTF8”。

提示:它适用于本地主机数据库。我把它放到网上 (OVH),现在我有了这些 É 字符

在此本地数据库上,SHOW VARIABLES 给出:

character_set_client : utf8mb4
character_set_connection : utf8mb4
character_set_database : latin1
character_set_filesystem : binary
character_set_results : utf8mb4
character_set_server : latin1
character_set_system : utf8
character_sets_dir : c:\wamp64\bin\mysql\mysql5.7.11\share\charsets\
check_proxy_users :OFF
collation_connection : utf8mb4_unicode_ci
collation_database : latin1_swedish_ci
collation_server : latin1_swedish_ci

最佳答案

您的数据应该已经用 UTF-8 编码,所以您不应该在那里使用 utf8_encode 函数。

函数utf8_encodeISO-8859-1 字符串编码为 UTF-8,这不是您需要的。

只需删除此功能即可。

关于php - É 而不是 "é",绝对不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38942023/

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