PHP字符编码转换技巧:iconv与mb_convert_encoding函数深度解析
如何将phpinfo字符串类型转换
PHP中通过icons和mb_convert_encoding函数进行字符编码转换的详细解释如下:
icons函数库可以完成不同字符集之间的转换,是PHP编程中不可缺少的基础函数库.
用法如下:
展开如下:
′;echoiconv(′GB2312′,′UTF−8′,str);从GB2312编码为UTF-8echo'
';echoiconv_substr([数学处理error]str,1,1,′UTF−8′);//按字符数而不是字节进行截取dantri(iconvgetencoding());//获取当前页面编码信息echoiconvstrlen(str,'UTF-8');//获取设置编码的字符串长度//也用到了[数学处理错误]content=iconv("UTF−8","gbk//TRANSLIT",content);Comments:
1.iconv不是PHP的默认函数,也是默认安装的模块,使用前需要安装。
如果是windows2000+php,可以修改php.ini文件,在extension=php_iconv.dll前添加“;”。
另外,你需要将Ystem32下winnt/s上原来的php安装文件下的iconv.dll复制过来(如果你的dll指向这个目录,我本地就没有做这一步)
Linux环境下,使用静态安装并添加一个附加项--with-当配置的iconv足够时,phpinfo可以看到iconv项。
(Linux7.3+Apache4.06+php4.3.2);
这样就完成了php中iconv的引入
2.使用iconv函数将捕获的utf-8编码的页面转换为gb2312,我发现如果使用iconv函数对捕获的数据进行转码,没有任何数据会因此而减少。
这是:
stringiconv(stringin_charset,stringout_charset,stringstr)
注意:第二个参数除了指定要转换的编码外,还可以加两个后缀:/。
/翻译和//忽略。
//translit会自动将无法直接转换的字符转换为一个或多个预测字符。
//ignore将忽略无法转换的字符。
默认效果已从第一个无效字符开始被截断。
如果截断的话肯定会少;
可以用iconv("UTF-8","GB2312//IGNORE",$string)这样忽略那些字符可以修改不能的改变了;
补充:
PHP中mb_convert_encoding和icons函数介绍
mb_convert_encoding函数用于转换编码,与icons函数类似。
英文一般不会有编码问题,只有中文数据才会出现这个问题。
例如,使用ZendStudio或Editplus编写程序时,使用gbk编码。
如果需要将数据录入数据库,而数据库的编码是utf8,则必须对数据进行编码转换,否则会失真。
进入数据库时。
将GBK转UTF-8
GB2312ToBig5
但是,要使用上述函数,首先mbstring扩展库。
原理还是一样的,修改php.ini另一个函数icons也是用来转换字符串编码的,其功能与上面的函数类似:
下面是一些详细的例子:
5)mb_convert_encoding—转换字符编码(PHP4>=4.0.6,PHP5)
用法:
首先必须在php.ini中启用mbstring扩展库,位于extension=php_mbstring.dll前面添加;
去掉mb_convert_encoding可以指定多个内容,会自动识别,但是执行效率比iconv差很多;为什么还需要解释()函数呢?答案如下:
我发现转换iconv字符“-”在访问gb2312时会产生错误。
如果没有ignore参数,则无法保存该字符后面的所有字符串。
这样,这个“-”也无法成功转换输出。
而且,mb_convert_encoding没有这个bug。
一般情况下,iconv只是在使用的时候。
无法确定原始编码,或者只有转换后iconv无法正常显示时才使用mb_convert_encoding函数。
PHP编写函数change($str)实现字符串转换功能,例如“str_replace”转换成"S?
如果从小写转换为大写,“str_replace”是否转换为“STR_REPLACE”?
php内置函数strtoupper(),只需strtoupper("str_replace")即可。
如果你想写一个change函数,那么就是:
functionchange("$str){
reversoupper($str);
}
2.{
返回substr(str($str),0,1);
}
PHP中字符串“open_floor”转换成“OpenFloor”、”you_and_she”转换成”YouAn
程序代码:
原理:根据_分割成单词,每个单词首字母大写,然后合并。