我正在从PHP 5.2升级到5.5,当我提交带有国际字符的表单字段时,如“Häst”,整个字段在$ _POST中为空。所有其他$ _POST字段都是应该的。
如果我在帖子后面的页面上查看Chrome检查器,则会在此字段的标题表单数据中显示(无法解码值)。如果我在其中单击“查看URL编码”,则显示“H%E4st”,因此该字段中有一些内容,但它不会显示。
我在页面的<head>
中有这种编码:
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta content="iso-8859-1" http-equiv="encoding">
我尝试使用相同的标题创建一个完全空的PHP页面,只是一个提交表单字段,$ _POST正常工作。
所以我的代码有问题,但即使我在index.php的顶部检查$ _POST ['fieldname'],它仍然是空的,所以我怀疑页面上的某些内容正在通过POST发送它编码错误。有没有更多的方法来设置我错过的表单的编码?
如果我将上面的元标记更改为UTF8,一切正常,除了页面上的其他内容都是乱码,因为我的数据库是latin1 / iso-8859-1,所以我需要它来使用这个字符集。我不使用htmlspecialchars或任何东西,只是一个简单的POST。
我应该寻找什么?或者我是否需要将整个数据库转换为utf8才能使其正常工作?