PHP - 逃离长破折号
问题描述:
我$从形式_POST'ing以下标题:PHP - 逃离长破折号
Google’s New Partner Android Update Initiative: Very Promising — Maybe; We’ll See
而且处理页面上,如果我做的第一件事就是
echo "<pre>";
print_r($_POST);
die();
我见:
Google’s New Partner Android Update Initiative: Very Promising — Maybe; We’ll See
据我所知,有职能转换&转义字符和他们的HTML等价物,但如何能我确保将这些内容添加到正确编码的$ _POST中?
干杯,
答
带表格的页面和显示页面都需要使用相同的字符集。要重现您展示的行为,我不得不创建2页,一个形式,
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
其发布到一个页面,而不说。
如果我把meta标签放在两个页面中,它会正确输出,如果我从两个页面中删除它,它都会正确输出。
如果只有表单有它,你会得到你发布的内容,如果只有接收的页面有它,你会得到?的。
test.php的
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<form method="post" action="test2.php">
<input type="text" name="string">
<input type="submit">
</form>
test2.php
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<?php
if(isset($_POST['string']))
{
echo "<pre>";
print_r($_POST['string']);
die();
}
?>
如果我是你的字符串粘贴到test.php的输入框中,点击提交,我拿回来在正常test2.php。如果我删除test2.php的第一行,我会得到你描述的行为。
当我utf8_decode()发布的内容是“Google新合作伙伴Android更新计划:非常有希望吗?也许;我们会看到”。我更多地问为什么它会以这种格式放入$ _POST中。谢谢。 – barfoon 2011-05-10 20:39:19
如果尝试使用utf8_encode()输出,会发生什么情况?我想问题是表单提交了错误的字符集/内容类型。尝试确定浏览器使用的字符集。或者通过PHP头部('Content-type:text/html; charset = utf-8');或HTML元标记:'' – GeneSys 2011-05-10 20:55:28
使用utf8_encode()输出我输入的问题中的原始字符串。我已经在表单 – barfoon 2011-05-10 21:02:53