html实体不转换特殊字符

时间:2013-02-21 16:56:51

标签: php character html-entities

我正在使用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

2 个答案:

答案 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);
?>

结果:

&quot;Hello Colors&quot;