2

我正在使用 htmlentities 转换带有重音符号的字符,但它没有转换这种类型的引号“。相反,浏览器会显示一个带有问号的奇怪符号 </p>

如何转换这些显示为符号的字符?例如,名为“Hello Colors”的书在桌子上。

我已经尝试过这个命令,但它不起作用:

htmlentities($message);
htmlentities($message, ENT_QUOTES, 'UTF-8');
htmlentities($message, ENT_NOQUOTES, 'UTF-8');
htmlentities($message, ENT_COMPAT, 'UTF-8');

谢谢你。

如果我执行以下操作,我刚刚意识到一些奇怪的事情

echo $message; die(); 

显示调试报价的白页显示!那么发生了什么?为什么它没有在网站页面中正确显示?:S

4

2 回答 2

4

看起来您错过了浏览器中的字符集规范,

尝试将<meta charset="UTF-8">其添加到您的网页头部部分。我以前遇到过这样的问题,以 UTF -8 显示多语言文本,我做了同样的事情来解决这个问题。

希望这可以帮助

顺便提一句

对于 HTML 5 <meta charset="UTF-8">作品

在 HTML 4 的情况下

<meta http-equiv="Content-type" content="text/html;charset=UTF-8">

如果是 XML,您必须指定

<?xml version="1.0" encoding="UTF-8"?>

这里是您可以获取所有信息的地方

在 HTML 中声明字符编码

有几种方法可以设置内容字符集,即使您也可以设置服务器以始终呈现 utf-8,您可以在此处阅读服务器设置部分中的更多信息

编辑 : -

在评论区与你对话后,

你的问题是 Joomla

您通过将字符集 ISO-8859 放在网页中进行了测试,它的工作原理清楚地证明了您在 ISO 中而不是在 UTF-8 中获取内容

我认为您的mysql数据库可能不在UTF-8中,这就是为什么它将ISO文本发送到前面,您可以将数据库更改为UTF-8 general-ci或ISO latin1,这可行并且可行,我建议您将 DB 更改为 utf-8-general-ci,因为您已经有标头设置为 utf-8 的 html 页面,这将解决您的问题。

此外,如果您无法更改数据库,那么您已经知道它在 ISO 字符集中,因此将所有 Joomla 模板标题更改为 ISO 字符集。

看起来像这样

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

或者

在php中

header('Content-Type: text/html; charset=iso-8859-1'); 

通过删除现有的 charset utf-8 声明。

于 2013-02-21T17:04:50.577 回答
1

试试下面的代码,它对我有用:

<?php
$message = "“Hello Colors“";
$message = iconv('UTF-8', 'ASCII//TRANSLIT', $message);
echo htmlentities($message);
?>

结果:

&quot;Hello Colors&quot;
于 2013-02-21T17:06:45.600 回答