gpt4 book ai didi

php - utf8 在回显文本中没有正确显示连字符

转载 作者:行者123 更新时间:2023-11-29 01:13:49 25 4
gpt4 key购买 nike

我的 MySQL 数据库设置为 utf8_unicode_ci,并且我将 $pdo->exec('SET NAMES "utf8"') 作为以下 php 代码的一部分,但是当我从查询中回显文本时,连字符 - 看起来像这样 – “。我做错了什么,为什么连字符显示不正确?

<?php    
try {
$pdo = new PDO('mysql:host=localhost;dbname=danville_tpf', 'danville_dan', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');
} catch (PDOException $e) {
$output = 'Unable to connect to the database server.';
include 'output.html.php';
exit();
}

$output = 'Theme Park Database initialized';
//include 'output.html.php';//

try {
$park_id = $_GET['park_id'];
$query = "SELECT * FROM tpf_parks WHERE park_id = $park_id";
$result = $pdo->query($query);
} catch (PDOException $e) {
$output = 'Unable to connect to the database server.';
//include 'output.html.php';//
}

$output = 'Sucessfully pulled park';
//include 'output.html.php';//

foreach ($result as $row) {
$parkdetails[] = array(
'name' => $row['name'],
'blurb' => $row['blurb'],
'website' => $row['website'],
'address' => $row['address'],
'logo' => $row['logo']
);
}
?>

请帮忙。

最佳答案

-€“ 很常见 mojibake对于 en dash (),这是一个不同于连字符的字符。

这是采用 UTF-8 编码形式的破折号 (0xe2 0x80 0x93) 并错误地假设它实际上是使用 Windows-1252 编码的结果。 .

将这三个字节解释为Windows-1252:0xe20x800x93分别代表â

假设违规字符在 blurb 字段中,如果您查询 SELECT HEX(blurb) FROM tpf_parks(使用合适的 WHERE 子句),您将看到十六进制违规字节的编码。

如果您在其中看到 E28093,则数据库值已正确编码为 UTF-8,并且您的客户端或服务器配置中的字符编码不匹配(例如,您正在从数据库或使用不匹配的编码将其显示给浏览器)。

但是,如果您看到 C3A2E282ACE2809C,则该字符在数据库中的编码不正确——即解释不正确,然后将其保存为这 3 个字符的 UTF-8 表示形式。如果是这种情况,您需要更新数据以解决问题。你可以使用 iconv 来做到这一点:

$fixedData = iconv("utf-8", "windows-1252", $badData);

这会将双重转换后的字节转换回 UTF-8 编码。

关于php - utf8 在回显文本中没有正确显示连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15694283/

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