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

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:SAE的storage服务使用方法
今天终于弄懂了sae的storage怎么使用。 因为sae不支持文件权限设置,所有的代码文件都是不可数的。但是sae提供了特别好的一个分布式文件存储服务,用来存放持久文件。其实就是用来存放网站的素材文件,如图片,文件等等的。 所以,当需要存储文件数据的时候,可以使用

   将一个短信接口代码从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可以这样热编译下

  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

  再来个GB2312 To Big5

  mb_strtolower() – 使字符串小写

  mb_strtoupper() – 使字符串大写

  strtolower() – 将字符串转化为小写

  strtoupper() – 将字符串转化为大写

  ucfirst() – 将字符串的首字母转换为大写

  ucwords() – 将字符串中每个单词的首字母转换为大写

  iconv例子

  把gb2312置换成utf-8:

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

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

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

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

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

分享:php输出控制的学习笔记
1、简介 当PHP脚本有输出时,输出控制函数可以用这些来控制输出。这在多种不同情况中非常有用,尤其是用来在脚本开始输出 数据后,发送http头信息到浏览器。输出控制函数不影响由 header()或setcookie()发送的文件头信息,仅影响像echo这样的函数和PHP代码块间的数据。

来源:模板无忧//所属分类:PHP教程/更新时间:2014-10-19
相关PHP教程