php表单提交utf8?

时间:2011-02-04 19:25:25

标签: php html encoding

在我的网站上有一个简单的textarea表单供人们发表评论。问题是有时我会收到uft8中的信息,有时候会收到iso信息。有可能控制它吗?

也许我做错了什么,但浏览器是否可能更改其发送的数据的编码?

感谢

6 个答案:

答案 0 :(得分:18)

如果您想确定自己接受的字符集,请在表单中进行设置

<form method="post" action="/your/url/" accept-charset="UTF-8">
</form>

您可以在此处查看所有可接受的字符集:Character Sets

答案 1 :(得分:4)

你可以随时强制使用UTF-8。然后,您可以使用UTF-8广告发送,接收和存储大多数人类语言的数据,而无需更改字符集。

<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>

答案 2 :(得分:1)

但是...在编码之前检查,如果string已经是utf8 否则你会对它进行双重编码

function str_to_utf8 ($string) { 

    if (mb_detect_encoding($string, 'UTF-8', true) === false) { 
      $string = utf8_encode($string); 
    } 

    return $str; 
}

或使用

$string = utf8_encode(utf8_decode($string)); 

所以你不要对字符串进行双重编码

答案 3 :(得分:0)

我通过在php.ini文件中更改 mbstring.http_input = pass 解决了这个问题

答案 4 :(得分:-1)

如果问题出现在所有/部分浏览器上或只有IE浏览器上,您是否已使用多种不同的浏览器进行测试?

答案 5 :(得分:-3)

您可以使用PHP的utf8_encode函数将$ _POST数据编码为UTF-8。

类似的东西:

$_POST['comments'] = utf8_encode( $_POST['comments'] );