gpt4 book ai didi

带有 html_entity_decode 和 IIS8 的 PHP 5.5

转载 作者:行者123 更新时间:2023-11-29 00:26:37 26 4
gpt4 key购买 nike

我们最近从带有 PHP 5.3.4 的 IIS 7.5 迁移到带有 PHP 5.5 的 IIS 8。我们在从 MySQL 中提取数据时遇到问题。以前的基础架构不存在该问题。

当从 MySQL 中提取字符串并显示给客户端时,编码显示不正确。

例如:

文本应该像在旧基础设施上一样显示:

“Sandr y Carlos en este episodio?”

但它显示为:

“¿Qué planearon Sandra y Carlos en este episodio?"php

我尝试了以下方法:

  1. 将 header 添加到客户端,全部解释为 UTF-8,没有变化。

    header('content-type: text/html; charset=utf-8');

  2. 回显下面的编码字符:(它们向客户端正确显示为:ä ö ü ß €。)

    "\xc3\xa4"."\xc3\xb6"."\xc3\xbc"."\xc3\x9f"."\xe2\x82\xac";

  3. 为 UTF-8 的 html_entity_decode 添加编码选项。没有变化。

有什么想法吗?代码吹。

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
// CONNECT TO THE DATABASE
$DB_NAME = 'removed';
$DB_HOST = 'removed';
$DB_USER = 'removed';
$DB_PASS = 'removed';

$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

// A QUICK QUERY ON A FAKE USER TABLE
$query = "SELECT * FROM `tablename` WHERE `item`='1234'";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

// GOING THROUGH THE DATA
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo html_entity_decode($row['prompt']);
}
}
else {
echo 'NO RESULTS';
}

// CLOSE CONNECTION
mysqli_close($mysqli);

最佳答案

看起来您的数据库是以 Latin 1 编码而不是 UTF8 存储的,快速修复应该是使用以下语法:

<?php
echo html_entity_decode($row['prompt'],ENT_COMPAT | ENT_HTML401,'ISO-8859-1');

真正的解决办法是修复你的数据库,以 UTF8 格式存储数据,并让你的所有工具链都以 UTF8 格式显示。

html_entity_decode() 从 PHP 5.4 开始使用 UTF8 作为默认编码: http://fr2.php.net/manual/en/migration54.other.php

关于带有 html_entity_decode 和 IIS8 的 PHP 5.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18617882/

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