如何正确编码/解码通过POST发送的变音符号

时间:2013-02-19 10:46:00

标签: php encoding utf-8

这是我的问题,让我头疼了一段时间。我需要我的网络应用程序来正确处理任何东欧变音符号(主要是ăĂîÎŞŞŢ))。数据库正确处理它们,php脚本正确处理它们(所有php脚本都使用utf-8编码),但处理表单时出现问题。

例如,将以下内容插入数据库,处理正确,字符编码正确,保存正确,正确显示:

$insert_value = htmlentities('ă Ă î Î ş Ş ţ Ţ â Â',ENT_COMPAT, "UTF-8");

但是,如果我在text / textarea输入中键入相同的字符串并使用POST发送它:

$insert_value = htmlentities($_POST['test_string'],ENT_COMPAT, "UTF-8");    

这将返回一个空字符串。

我检查了脚本用Firefox接收的POST,而不是'şŞŢŢ'字符我得到奇怪的符号(ºªþÞ),所以我猜这就是为什么htmlentities返回空。< / p>

我尝试将表单上的enctype设置为multipart / form-data,它似乎正确地发送它,但然后将htmlentities应用到它仍然以某种方式将其搞砸(例如,如果$_POST['ta'] = ăĂîÎşŞţŢâÂ, htmlentities($_POST['ta'],ENT_COMPAT, "UTF-8") returns $kappa;

编辑:非常感谢deceze,该链接帮助我处理了我的Web应用程序的编码,没有任何htmlentities调用。我向那些在php,html和数据库之间处理变音符号问题的人推荐这篇文章。

1 个答案:

答案 0 :(得分:1)

很高兴评论帮助......

不要对进入数据库Handle Unicode Front To Back In A Web App的数据进行HTML编码。这样做有很多问题,前面提到的文章经历了最大的一些。