PHP编码转换函数mb_convert_encoding与iconv用法
来源: 阅读:1996 次 日期:2014-10-22 13:44:33
温馨提示: 小编为您整理了“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");

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map