mb_check_encoding — 检查字符串在指定的编码里是否有效PHP 版本要求: (PHP 4 >= 4.4.3, PHP 5 >= 5.1.3)说明:bool mb_check_encoding ([ string $var = NULL [, string $encoding = mb_internal_encoding() ]] )检查指定的字节流在指定的编码里是否有效。它能有效避免所谓的“无效编码攻击(Invalid Encoding Attack)”。参数var要检查的字节流。如果省略了这个参数,此函数会检查所有来自最初请求所有的输入。encoding期望的...
php中可以使用 mb_detect_encoding() 函数来判断字符串是什么编码的。 当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF-8,或者UTF-8和GBK(这里主要是对于cp936的判断),网上说是由于字符短时mb_detect_encoding会出现误判。 代码如下:$encode = mb_detect_encoding($keytitle, array("ASCII","UTF-8","GB2312","GBK","BIG5")); if($encode == "UTF-8"){$keytitle = ...
这个问题是mod_encoding已经先一步处理了url ,而PHP又解了一次 例如 x.php?s=%252B%2F%2B%2F 那么$_GET['s']得到的是 +/ / urlencode("+") = %2B urlencode("%2B") = %252B 所以,这个url被decode了两次 第一次是 urldecode( "%252B%2F%2B%2F") = %2B/+/ urldecode( "%2B/+/") = +/ / 解决办法 修改httpd.conf 将 EncodingEngine on 这一段配置移到需要的vitualHost里去,这个不能和php脚本并存。
后来又在手册上找到了is_utf8函数,这样,再结合iconv函数,我的问题就解决了。下面帖出这个函数: 代码如下:function is_utf8($string) { return preg_match('%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\...
不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。 mb_convert_encoding的用法见官方: http://cn.php.com/manual/zh/function.mb-convert-encoding.php 做一个GBK To UTF-8 代码如下:header("content-Type: text/html; charset=Utf-8"); echo mb_con...
当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF- 8,或者UTF-8和GBK(这里主要是对于cp936的判断),网上说是由于字符短是,mb_detect_encoding会出现误判。 例如: 代码如下:$encode = mb_detect_encoding($keytitle, array("ASCII",UTF-8′,"GB2312′,"GBK",BIG5′)); if ($encode == “UTF-8″){ $keytitle = iconv("UTF-8″,"GBK",$keytitle); } 这段代码的作用是检...
iconv — Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5) mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5) 用法: string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] ) 需要先启用 mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉 string iconv ( string in_charset, string out_charset, string str ) 注意...
mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。mb_convert_encoding的用法见官方:http://php.com/manual/zh/function.mb-convert-encod...
php中可以使用 mb_detect_encoding() 函数来判断字符串是什么编码的。 当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF-8,或者UTF-8和GBK(这里主要是对于cp936的判断),网上说是由于字符短时mb_detect_encoding会出现误判。 代码如下:$encode = mb_detect_encoding($keytitle, array("ASCII","UTF-8","GB2312","GBK","BIG5")); if($encode == "UTF-8"){$keytitle = ...
这个问题是mod_encoding已经先一步处理了url ,而PHP又解了一次 例如 x.php?s=%252B%2F%2B%2F 那么$_GET['s']得到的是 +/ / urlencode("+") = %2B urlencode("%2B") = %252B 所以,这个url被decode了两次 第一次是 urldecode( "%252B%2F%2B%2F") = %2B/+/ urldecode( "%2B/+/") = +/ / 解决办法 修改httpd.conf 将 <IfModule mod_encoding.c> EncodingEngine on 这一段配置移到需要的vitualHost里去,这个...
后来又在手册上找到了is_utf8函数,这样,再结合iconv函数,我的问题就解决了。下面帖出这个函数: 代码如下:function is_utf8($string) { return preg_match('%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\...
不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。 mb_convert_encoding的用法见官方: http://cn.php.com/manual/zh/function.mb-convert-encoding.php 做一个GBK To UTF-8 代码如下:<?php header("content-Type: text/html; charset=Utf-8"); echo ...
当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF- 8,或者UTF-8和GBK(这里主要是对于cp936的判断),网上说是由于字符短是,mb_detect_encoding会出现误判。 例如: 代码如下:$encode = mb_detect_encoding($keytitle, array("ASCII",UTF-8′,"GB2312′,"GBK",BIG5′)); if ($encode == “UTF-8″){ $keytitle = iconv("UTF-8″,"GBK",$keytitle); } 这段代码的作用是检...
iconv — Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5) mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5) 用法: string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] ) 需要先启用 mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉 string iconv ( string in_charset, string out_charset, string str ) 注意...
mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。mb_convert_encoding的用法见官方:http://php.com/manual/zh/function.mb-convert-encod...