PHP编码转换函数mb_convert_encoding与iconv用法

将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查看php日志,

[25-Sep-2014 20:15:21] WARNING: [pool www] child 9617 said into stderr: “NOTICE: PHP message: PHP Fatal error:  Call to undefined function mb_convert_encoding() in /data/htdocs/xx.php on line 13″

发现函数mb_convert_encoding没定义,看着像某个模块没装,google了把,要装个mbstring扩展,之前都是一下装好多扩展(虽然不知道这个扩展是干啥的,按照网络文档来),现在是要应用需要哪个装哪个,逼格略有提高(至少这样能让我知道哪个模块是干啥的)。

mb-convert-encoding
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )

将 string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding。

官网文档  http://php.net/manual/zh/function.mb-convert-encoding.php 需要安装mbstring扩展库,如果已经编译好的php可以这样热编译下

 代码如下 复制代码

cd /tmp/php-5.3.28/ext/mbstring/
usr/local/services/php/bin/phpize
./configure --with-php-config=/usr/local/services/php/bin/php-config
make && make install
vim /usr/local/services/php/etc/php.ini
extension="/usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/mbstring.so";
 iconv
string iconv ( string in_charset, string out_charset, string str )

iconv函数库能够完成各种字符集间的转换
注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failu

官网地址  http://php.net/manual/zh/book.iconv.php

已经安装好php的,同样也可以使用上面的方法安装iconv模块

mb_convert_encoding例子
mb_convert_encoding这个函数是用来转换编码的。英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码

 
做一个GBK To UTF-8

 代码如下 复制代码
<?php
header(“content-Type: text/html; charset=Utf-8″);
echo mb_convert_encoding(“???S我的友仔”, “UTF-8″, “GBK”);
?>

再来个GB2312 To Big5

 代码如下 复制代码

<?php
header(“content-Type: text/html; charset=big5″);
echo mb_convert_encoding(“你是我的朋友”, “big5″, “GB2312″);
?>

mb_strtolower() – 使字符串小写
mb_strtoupper() – 使字符串大写
strtolower() – 将字符串转化为小写
strtoupper() – 将字符串转化为大写
ucfirst() – 将字符串的首字母转换为大写
ucwords() – 将字符串中每个单词的首字母转换为大写
 

iconv例子

把gb2312置换成utf-8:

 代码如下 复制代码

$text=iconv("GB2312","UTF-8",$text);

在用$text=iconv(“UTF-8″,”GB2312″,$text)过程中,如果遇到一些特别字符时,如:”—”,英文名中的”.”等等字符,转换就断掉了。这些字符后的文字都没法继续转换了。

针对这的问题,可以用如下代码实现:

 代码如下 复制代码

$text=iconv("UTF-8","GBK",$text);

你没有看错,就这么简单,不使用gb2312,而写成GBK,就可以了。

还有一种方法,第二个参数,加上//IGNORE,忽略错误,如下:

 代码如下 复制代码

iconv("UTF-8","GB2312//IGNORE",$data);

一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数。

 代码如下 复制代码

$content = iconv("GBK", "UTF-8″, $content);
$content = mb_convert_encoding($content, "UTF-8″, "GBK");

时间: 2024-09-24 09:16:05

PHP编码转换函数mb_convert_encoding与iconv用法的相关文章

PHP下编码转换函数mb_convert_encoding与iconv的使用说明_php技巧

不过英文一般不会存在编码问题,只有中文数据才会有这个问题.比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码. mb_convert_encoding的用法见官方: http://cn.php.net/manual/zh/function.mb-convert-encoding.php 做一个GBK To UTF-8 复制代码 代码如下: <?php header(&qu

php编码转换函数mb_convert_encoding

mb_convert_encoding 函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,几乎支持所有编码.PHP 4 >= 4.0.6.PHP 5 版本支持. 函数原型: /** * 多字节字符串编码转换函数 * * @param string str 需要进行编码转换的字符串 * @param string to_encoding 指定转换为某

php中的字符编码转换函数用法示例_php技巧

本文实例讲述了php中的字符编码转换函数的用法,分享给大家供大家参考.具体实现方法如下: 一般来说,在网页程序中,尤其是涉及到数据库的读出过程中,往往最恼火的就是字符编码的问题,php4.0.6以上的版本提供了mb_convert_encoding 可以方便的转换编码. 具体如下: 复制代码 代码如下: <?php /* Convert internal character encoding to SJIS */ $str = mb_convert_encoding($str, "SJIS

详解PHP编码转换函数应用技巧_php实例

在PHP中有数量庞大的函数来支持我们的需求应用.下面介绍的这个函数就是有关PHP编码转换函数.希望对大家有所帮助.mb_convert_encoding 函数为PHP内部多字节字符串编码转换函数. 可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,几乎支持所有编码.PHP 4 >= 4.0.6.PHP 5 版本支持. PHP编码转换函数原型: /**  * 多字节字符串编码转换函数  * 

PHP编码转换函数mb

  将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查看php日志, [25-Sep-2014 20:15:21] WARNING: [pool www] child 9617 said into stderr: "NOTICE: PHP message: PHP Fatal error: Call to undefined function mb_convert_encoding() in /data/htdocs/xx.php on line 13″

js 字符串编码转换函数

escape 方法 对 String 对象编码以便它们能在所有计算机上可读, escape(charString) 必选项 charstring 参数是要编码的任意 String 对象或文字. 说明 : escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式).所有空格. 标点.重音符号以 及 其他非 ASCII字符都用 %xx 编码代替,其中 xx 等于表示该字符的十 六进制数.例如,空格返回的是"%20 " . 字符值大于 255 的以 %u

php iconv mb_convert_encoding编码转换函数

用iconv函数: iconv( "utf-8", "gb2312" , "abc阳光123"); 据说这样好些,可以忽略转换时的错误! iconv( "utf-8", "gb2312//ignore" , "abc阳光123"); mb_convert_encoding的用法见官方: http://cn.php教程.net/manual/zh/function.mb-convert-e

PHP编码转换函数 自动转换字符集支持数组转换_php技巧

复制代码 代码如下: // 自动转换字符集 支持数组转换 function auto_charset($fContents, $from='gbk', $to='utf-8') { $from = strtoupper($from) == 'UTF8' ? 'utf-8' : $from; $to = strtoupper($to) == 'UTF8' ? 'utf-8' : $to; if (strtoupper($from) === strtoupper($to) || empty($fCo

php编码转换函数

所有该字符后面的字符串都无法被保存.不管怎么样,这个"-"都无法转换成功,无法输出.另外mb_convert_encoding没有这个bug.   */ header("content-type: text/html; charset=utf-8"); echo mb_convert_encoding("你是我的友仔", "utf-8", "gbk"); //gbk to gb2312   header(&