PHP $_POST 不带重音符号

标签 php html post html-entities

本题已解决,查看我的答案查看解决方案


我正在尝试通过 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']);

我明白了

&Atilde;&nbsp;&Atilde;&uml;&Atilde;&not;&Atilde;&sup2;&Atilde;&sup1; 

实际输出

à èìòù 

即使我也在我的元标签和 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 处理它总是导致

&Atilde;&nbsp;&Atilde;&uml;&Atilde;&not;&Atilde;&sup2;&Atilde;&sup1; 

在“可读”字符中,是:

à èìòù

我刚刚改变了这个:

echo htmlentities($_POST['text1']);

为此:

echo htmlentities($_POST['text1'], ENT_QUOTES, "UTF-8");

一切正常,我打印出了我的真实输入。

谢谢大家的帮助!

关于PHP $_POST 不带重音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114412/

相关文章:

javascript - jQuery 可对静态内容进行排序

php - 使用 file_get_content 发布数据

php - 输入在 Laravel 中不起作用时重定向回来

javascript - 将唯一 ID 添加到点击功能生成的动态 html

html - HTML 中的多行按钮

ios - 如何在 swift ios 中向服务器发送整数请求?

ios - Swift to php 在本地服务器上不能在我的设备上运行?

php - 浏览器如何覆盖我的 UTF-8 header 设置以及如何停止它?

php - 区间内数字之间的接近度

javascript - 从 node.js 服务器加载脚本的正确 src= 属性是什么