PHP $_POST不带重音符号

这个问题解决了,检查我的答案,看看解决方案

我试图在我的数据库中添加带有重音字母的文本,通过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的重音字母转换为html实体($_ POST [‘text1’]但我需要$_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; 

实际输出

à èìòù 

即使我在我的meta-tags和标题中也设置了charset.有谁知道我怎么解决它?

最佳答案 我将采取另一种方式 – 添加到您的PHP代码<?php header(“Content-Type:text / html; charset = utf-8”); ?取代.保存元标记(某些浏览器随便忽略…) 从您提供的编码表示中,PHP回显UTF-8编码的字符串,而您的浏览器假设输出将是ISO-8859-1.设置该标题将使所有浏览器都了解UTF-8是预期的,只要他们在Accept-encoding下使用它.如果他们没有,他们会barf,但我只知道一个“现代”浏览器没有,它约占市场的0.2%. 请注意,在任何其他输出之前,您需要首先抛出该行(或者您可以输出缓冲该批次,这会使生活更轻松,但会消耗更多内存)

点赞