这真的很难解释,所以在这里......
我从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
。
答案 0 :(得分:0)
将特殊字符转换为HTML实体
htmlspecialchars("This year's");