html实体不转换特殊字符


html entities not converting special characters

我使用的是htmlentities,它转换带有重音的字符,但它不是转换这种类型的引号。"相反,浏览器显示了一个带问号的奇怪符号�

如何转换这些显示为符号的字符?这本书叫�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

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

请尝试在您的网页标题部分添加<meta charset="UTF-8">。我以前遇到过这样的问题,在UTF-8中显示多语言文本,我也这样做来解决这个问题。

希望这能帮助

BTW

用于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通用ci或ISO latin1,这是可行的,这是有效的。我建议你将数据库改为UTF-8-general-ci,因为你已经有了标题设置为UTF-8的html页面,这将解决你的问题。

此外,如果你不能更改DB,那么你已经知道它是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'); 

通过删除现有的字符集utf-8声明。

尝试以下代码,它对我有效:

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

结果:

&quot;Hello Colors&quot;

我的问题很简单:

当我在开发人员面板的"元素"选项卡中键入它时,它不起作用。但当我把它输入到代码中并重新加载页面时,它就起了作用。

这是因为浏览器在加载页面时会将其转换为正确的字符,但在开发者面板中键入实体id时不会转换。