本题已解决,查看我的答案查看解决方案
我正在尝试通过 HTML 表单向我的数据库添加带有重音字母的文本,该表单使用 POST 提交到 PHP 页面,问题是重音字母被转换为不可读的字符。
我有这个表格:
<form action="page.php" method="POST">
<input type="textarea" id="text1" name="text1" />
<input type="submit" value="Send" />
</form>
然后,在 page.php 中:
echo $_POST['text1'];
问题是,如果我在文本区域中输入 àèìòù
然后提交表单,我会得到以下输出:
à èìòù
我的下一步是使用 htmlentities($_POST['text1']
将重音字母转换为 html 实体,但我需要 $_POST
给我正确的字母。
注意:在页眉中我已经有了
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
我该如何解决这个问题?
编辑
我试过
<form action="page.php" method="POST" accept-charset="UTF-8">
<input type="textarea" id="text1" name="text1" />
<input type="submit" value="Send" />
</form>
并没有解决
编辑 2
也尝试添加
<meta charset='utf-8'>
到我文档的头部,但它不起作用
编辑 3
我也尝试在第二页上将我的字符集设置为 UTF-8,并且
echo $_POST['text1'];
显示正确的结果。
我看到问题出在我使用 htmlentities 和这段代码
echo htmlentities($_POST['text1']);
我明白了
à èìòù
实际输出
à èìòù
即使我也在我的元标签和 header 中设置了字符集。有谁知道我该如何解决?
最佳答案
好吧,我终于解决了。即使我正在设置字符集,无论是否使用 PHP header 设置它
header('Content-Type: text/html; charset=utf-8');
或使用 HTML 元标记
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
将我的文件保存为 UTF-8,但没有用。
输入 àèìòù
然后用 htmlentities
处理它总是导致
à èìòù
在“可读”字符中,是:
à èìòù
我刚刚改变了这个:
echo htmlentities($_POST['text1']);
为此:
echo htmlentities($_POST['text1'], ENT_QUOTES, "UTF-8");
一切正常,我打印出了我的真实输入。
谢谢大家的帮助!
关于PHP $_POST 不带重音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114412/