我使用的是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);
?>
结果:
"Hello Colors"
我的问题很简单:
当我在开发人员面板的"元素"选项卡中键入它时,它不起作用。但当我把它输入到代码中并重新加载页面时,它就起了作用。
这是因为浏览器在加载页面时会将其转换为正确的字符,但在开发者面板中键入实体id时不会转换。