0

这是我的问题一直让我头疼一段时间。我需要我的 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 和数据库之间处理变音符号有困难的人推荐这篇文章。

4

1 回答 1

2

很高兴评论帮助...

不要对进入数据库的数据进行 HTML 编码,在 Web 应用程序中从头到尾处理 Unicode。这样做有很多问题,前面链接的文章介绍了最大的问题。

于 2013-02-19T11:43:14.127 回答