如何知道$_REQUEST中的字符集?以及如何设置$_REQUEST的字符集?
发布于 2009-09-19 12:44:32
长话短说:您并不真正了解通过GET或POST传递给PHP脚本的变量所使用的编码(字符集)(尤其是这里的GET是一个问题)。按照惯例,浏览器使用页面编码将表单发布到action-attribute中指定的服务器端资源,页面编码可以通过http-equiv元标记(HTML5中的charset元标记)或header指定。或者,在选择正确的编码时,一些浏览器还会考虑表单上的accept-charset-attribute。
GET参数和URL本身的编码取决于浏览器设置,因此可以由用户控制。您不应该依赖于特定的编码。
通常,你可以通过始终如一地使用UTF-8来处理所有与编码相关的问题,并在HTTP-header (Content-Type: text/html; charset=UTF-8)中指定正确的编码-这将在传递到字符串中的所有变量中产生正确的编码(UTF-8) (我们不是在谈论故意尝试扰乱编码以允许某些攻击向量进入脚本的rouge脚本)。您也不应该在GET参数或URL中依赖非ascii字符(这也是SEO友好链接删除或替换这些字符的原因)。
如果您确保UTF-8是唯一允许的字符集,那么可以使用mb_strlen($string, 'UTF-8')检查变量的长度。
编辑:(添加了一些链接)
下面是一些你需要阅读的内容:
发布于 2009-09-19 04:03:34
使用mb_internal_encoding可以知道当前设置了哪种编码。如果你的应用程序使用不同编码的日志,你最好使用mb_strlen。
干杯
发布于 2009-09-19 05:13:52
通常情况下,您可以控制字符编码,因为您可以从发送给客户端的超文本标记语言创建$_REQUEST。
ie:它是由你从PHP发送的一个页面生成的。
因此,您应该不必检测编码。
使用mb_functions需要启用多字节扩展-所以如果你在分发代码,你必须意识到并不是每个人都会有它。
header('Content-Type: text/html; charset=UTF-8');或者在HTML中:
<meta charset="utf-8">http://www.w3.org/International/O-charset
编辑: PHP6支持utf-8,不支持PHP5。
https://stackoverflow.com/questions/1447699
复制相似问题