我在php中发布包含特殊字符的数据时遇到问题:
总是显示的字符串:? < > ' - \“`'&%‰€2011>
字符串:? < > ' - “`'&%“®2011
我更改了表单属性:
<form id="frmBlog"method="post" enctype="multipart/form-data">
并且我还使用meta属性更改html:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
但结果仍然相同。任何人都可以帮助解决这个问题。谢谢
我的简单代码:
<?php
if(isset($_POST['submit'])){
echo $_POST['content'];
exit;
}
$content = "String: ? < > ' - \" ´& % ‰ € ® 2011";
?>
<html lang="en">
<head>
<title>Test</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post">
<textarea name="content" rows="20"><?=
$content
?></textarea>
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>
输出:
String: ? < > ' - " ´& % ‰ € ® 2011
答案 0 :(得分:2)
如果您的字符串通过数据库,那可能是问题所在。尝试更改数据库编码选项。 (这对我有用了一次)
否则,请尝试使用utf8_encode()
和utf8_decode()
,看看是否还有问题。如果您仍然这样做,那么问题可能在于您的表单或提交方式(在我看来)。
修改强>
您的问题是,当您回显内容时,尚未定义字符集,这会导致问题。您应该在<head>
之后回复,如下所示:
<html lang='en'>
<head>
<title>Test</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
if(isset($_POST['submit'])){
echo $_POST['content'];
exit;
}
$content = "String: ? < > ' - \" ´& % ‰ € ® 2011";
?>
<form method="post" action="post.php">
<textarea name="content" rows="20"><?php
echo $content;
?></textarea>
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>