我正在使用htmlentities转换characteres与重音,但它没有转换这种类型的引号“。相反,浏览器显示带有问号
的奇怪符号如何将这些显示为符号的字符转换为? 例如这本名为“你好颜色”的书就在桌面上。
我已经尝试过这个命令,但它不起作用:
htmlentities($message);
htmlentities($message, ENT_QUOTES, 'UTF-8');
htmlentities($message, ENT_NOQUOTES, 'UTF-8');
htmlentities($message, ENT_COMPAT, 'UTF-8');
谢谢。
我刚刚意识到一些奇怪的事情,如果我做了以下
echo $message; die();
显示调试报价的白页! 那么发生了什么?为什么它无法在网站页面中正确显示? :S
答案 0 :(得分:4)
您的浏览器中似乎错过了charset规范,
尝试在您的网页主题部分添加<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"?>
以下是您可以获取所有信息的地方
Declaring character encodings in HTML
有几种方法可以设置内容字符集,即使您可以设置服务器也可以渲染utf-8,您可以在此处阅读server setup部分中的更多信息
编辑: -
在评论部分与您交谈后
你的问题在于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">
OR
在php中
header('Content-Type: text/html; charset=iso-8859-1');
删除现有的charset utf-8声明。
答案 1 :(得分:1)
尝试以下代码,它对我有用:
<?php
$message = "“Hello Colors“";
$message = iconv('UTF-8', 'ASCII//TRANSLIT', $message);
echo htmlentities($message);
?>
结果:
"Hello Colors"