这解释起来真的很奇怪,所以它是这样的…
我从包含未转义的单引号的phpmyadmin中获取数据。我正在尝试通过在php头文件中使用Content-Type: text/html;来将'转换为'。
在数据库的一列中,该值为:This year's...
我将内容类型设置为<?php header('Content-Type: text/html; charset=UTF-8'); ?>
我是用mysql_fetch_assoc()获取数据的,所以它应该输出This year's。但是,它输出的是This year�s...。
然后,我手动从数据库中删除了This year's...,并将其替换为相同的This year's... (直接在数据库中)。我再次将内容类型设置为text/html,并得到以下结果:
This year's...就这样..。这几乎无法解释。通过表单将单个报价提交到数据库。我获取它并将内容类型设置为text/html,它将'输出为�。如果我进入数据库,手动删除',并用相同的'替换它,它就会输出'。
有没有人经历过这种奇怪的怪癖,或者意识到它可能是什么?
更新:
数据库中的值是由表单上传的This year's。引用在数据库中是未转义的。下面是我如何获取数据的方法。我希望将'转换为'。
<?php
header('Content-Type: text/html; charset=UTF-8');
include('init.inc.php');
function get_feeds() {
$query = mysql_query("SELECT * FROM test ORDER BY id DESC LIMIT 1");
while($fetch = mysql_fetch_assoc($query)) {
$text = $fetch['text'];
echo $text;
}
}
?>
<?php get_feeds(); ?>它输出This year�s。
然后,我从数据库中删除This year's,并在适当的位置手动编写This year's。它输出这个This year's。
发布于 2013-05-29 22:15:39
在插入到数据库之前,将特殊字符转换为HTML实体
htmlspecialchars("This year's");https://stackoverflow.com/questions/16806034
复制相似问题