【发布时间】:2013-04-13 10:11:49
【问题描述】:
这个问题已经解决了,查看我的答案看看解决方案
我正在尝试通过 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'];
问题是,如果我在我的 textarea 中输入 àèìòù 然后我提交表单,我会得到这个输出:
à èìòù
我的下一步是将重音字母转换为带有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']);
我明白了
à èìòù
实际输出的
à èìòù
即使我也在元标记和标题中设置了字符集。有谁知道我该如何解决?
【问题讨论】:
-
您应该在页面上检查您的编码,设置 URF-8 并且 ti 将起作用。谷歌了解更多详情。
-
@Harlakandra。啊,我看到了问题。您的输出页面上没有编码。
-
您总是必须指定编码。最好的方法是发送 HTTP 标头并将其放入 HTML。标头(如果存在)在使用 HTTP 时使用。 HTML 在没有 HTTP 的情况下加载 HTML 时使用,例如从磁盘作为文件。忘记
accept-charset,它对您没有帮助,因为浏览器以页面编码发送表单,在您的情况下已经是 UTF-8。
标签: php html post html-entities