在我的网站上有一个简单的textarea表单供人们发表评论。问题是有时我会收到uft8中的信息,有时候会收到iso信息。有可能控制它吗?
也许我做错了什么,但浏览器是否可能更改其发送的数据的编码?
感谢
答案 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'] );