在数据库上传的html代码中的字符

时间:2014-11-28 10:18:45

标签: php html mysql

我遇到“”字符的问题。我在互联网上读到,它可能是未设置为“UTF-8”的BOM和/或字符集。 但即使使用这些设置也无效。

让我们谈谈:

我正在创建一个php页面,使用Dreamweaver在数据库表上上传HTML文件。 然后我使用以下代码将HTML代码存储到变量中:

$fileText= file_get_contents($target_file);

*其中$target_file是上传的文件,如

<html>< head>< /head>< body>hello< /body>< /html> 

使其简单(没有标签中的空格)

然后我使用:

$fileText存储在数据库中
$sql="INSERT into TABLE (HTMLfile) VALUES ('$fileText');

然后,当我查看数据库中的记录时,它会显示:

< html>< head>< /head>< body>hello< /body>< /html>

我在php页面中都有charset = UTF-8,其中是上传和插入代码,以及html上传页面。 然后我在Dreamweaver中做了以下事情:编辑&gt;偏好&gt;新文件。取消选择“包含Unicode签名(BOM)”。

我甚至尝试了各种php解码功能,但我不想阅读“&amp; lt html&amp; gt”等。我想在数据库中阅读“<html>”。

有什么我想念的吗?提前致谢

2 个答案:

答案 0 :(得分:3)

告诉PHP检测并从读取文件的开头删除字节顺序标记。

function strip_bom($string)
{
    if (substr($string, 0, 3) === "\xEF\xBB\xBF") {
        $string = substr($string, 3);
    }
    return $string;
}

$fileText = file_get_contents($target_file);
$fileText = strip_bom($fileText);

答案 1 :(得分:1)

你必须在mysql中设置charset utf8。

你必须调用mysql函数

$link = mysql_connect('localhost', 'user', 'password'); mysql_set_charset('utf8', $link);

感谢