php html实体不转换特殊字符

yh2wf1be  于 2023-06-21  发布在  PHP
关注(0)|答案(3)|浏览(109)

我正在使用htmlentities,它正在转换带有重音的字符,但它不会转换这种类型的引号。相反,浏览器显示一个奇怪的符号,带有问号。
如何转换这些显示为符号的字符?那本叫《你好,色彩》的书在table上。
我试过这个命令,但它不工作:

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

谢谢你。
我刚意识到一件奇怪的事情,如果我做以下的事情

echo $message; die();

显示一个白色的页面,用于调试报价显示!那么到底发生了什么?为什么它不能正确显示在网站页面?:S

sf6xfgos

sf6xfgos1#

看起来你在浏览器中错过了字符集规范,
试着把<meta charset="UTF-8">这个加到你的网页标题部分。我以前遇到过这样的问题,以UTF-8显示多语言文本,我也这样做来解决这个问题。
希望这能有所帮助
BTW
对于HTML 5 <meta charset="UTF-8">工作
在HTML4情况下

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

如果是XML,则必须指定

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

这里是你能得到所有信息的地方
Declaring character encodings in HTML
有几种方法可以设置内容字符集,甚至可以设置服务器始终呈现utf-8,您可以在server setup部分阅读更多信息。

    • 编辑:-**

在评论区跟你聊过之后,

    • 您的问题是与Joomla**

你测试把字符集ISO-8859在网页和它的作品,这清楚地证明了你是在ISO的内容,而不是在UTF-8
可能你的mysql数据库不是UTF-8,我想这就是为什么它发送ISO文本到前面,你可以改变数据库到UTF-8通用ci或ISO latin1这是可行的,我建议你改变数据库到utf-8通用ci,因为你已经有html页面的头部设置为utf-8,这将解决你的问题。
此外,如果你不能改变数据库,那么你已经知道它在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声明。

zzwlnbp8

zzwlnbp82#

试试下面的代码,它为我工作:

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

结果:

&quot;Hello Colors&quot;
vjhs03f7

vjhs03f73#

我的问题很简单:
当我在开发者面板的Elements选项卡中输入它时,它不起作用。但是当我把它输入到我的代码中并重新加载页面时,它起作用了。
这是因为浏览器在加载页面时会将其转换为正确的字符,但当您在开发人员面板中输入实体id时不会转换。

相关问题