在特殊字符前面渲染

时间:2013-02-28 23:44:36

标签: php

我正在阅读CMS中包含版权符号®的字符串。但是,当我将此字符串呈现给我的网站时,我会在版权符号前面找到Â。例如,我的CMS中有Microsoft®,但它会呈现Microsoft®

$title = (string) $myString;
$title = htmlentities($title,ENT_NOQUOTES,'UTF-8',false);
$title = str_replace(array('&lt;','&gt;'),array('<','>'), $title);
var_dump( $title );

3 个答案:

答案 0 :(得分:3)

“版权符号”的字符代码为0xA9。但是,这超出了0x000x7F的范围。

因此,在ISO-8859-1或Windows-1252等单字节字符集中,它可以正常工作。

但是在像Unicode这样的多字节集中,它表示为0xC2 0xA9。巧合的是,第二个字节与原始字节相同,仅此而已。

要修复,您需要确保编码一致。一种解决方案是确保您的HTML文档UTF-8charset

答案 1 :(得分:0)

尝试utf8_encoding然后utf8_decoding如果你“移动”文本arround。 并检查是否在html的标题中使用了正确的编码。

请注意,如果你已经在数据库中弄乱了它,你将无法恢复它。

答案 2 :(得分:0)

检查php.ini中的php [default_charset][1]设置或在php文件中使用ini_set()

<?php

ini_set("default_charset", "utf-8");

?>

将php文件的编码设置为utf8

设置html元标记:

<meta equiv="Content-Type" content="text/html; charset=utf-8">