这个问题解决了,检查我的答案,看看解决方案
我试图在我的数据库中添加带有重音字母的文本,通过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']);
我明白了
à èìòù
实际输出
à èìòù
即使我在我的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%. 请注意,在任何其他输出之前,您需要首先抛出该行(或者您可以输出缓冲该批次,这会使生活更轻松,但会消耗更多内存)