这是我的问题一直让我头疼一段时间。我需要我的 Web 应用程序来正确处理任何东欧变音符号(主要是 ă Ă î Î ş Ş ţ Ţ â Â)。数据库正确处理它们,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 返回空的原因。
我尝试将表单上的 enctype 设置为 multipart/form-data 并且它似乎可以正确发送它但随后将 htmlentities 应用到它仍然以某种方式搞砸了它(例如 if $_POST['ta'] = ăĂîÎşŞţŢâÂ, htmlentities($_POST['ta'],ENT_COMPAT, "UTF-8") returns $kappa;
)
编辑:非常感谢 deceze,该链接帮助我处理我的 Web 应用程序的编码,而无需任何 htmlentities 调用。我向那些在 php、html 和数据库之间处理变音符号有困难的人推荐这篇文章。