使php支持mbstring库
多国语言并存就意味着多字节,PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是1~3倍的差异了。
采用PHP字符串mbstring可以较好地解决这个问题。mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用mb_strlen($str,’UTF-8′)。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数得到,设置有两种方式:
1. 在php.ini中设置mbstring.internal_encoding = UTF-8<br > 2. 调用mb_internal_encoding(”GBK”)</br >
除了PHP字符串mbstring,还有很多切割函数,其中mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。而且从函数切割对长度的作用也不同,mb_strcut的切割条件是小于strlen, mb_substr是等于strlen,看下面的例子,
<ol class="dp-xml"><li class="alt"><span class="tag"><font color="#006699"><</font color="#006699"></span class="tag"> ?
- $<span class="attribute"><font color="#ff0000">str = ‘我是一串比较长的中文-www.jefflei.com’; </font color="#ff0000"></span class="attribute">
<li class="alt">echo “mb_substr:” . mb_substr($str, 0, 6, ‘utf-8′);
- echo ”
<li class="alt">“;
- echo “mb_strcut:” . mb_strcut($str, 0, 6, ‘utf-8′);
<li class="alt"><span class="tag"><font color="#006699">?></font color="#006699">
</span class="tag"></li class="alt"></li class="alt"></li class="alt"></li class="alt"></ol class="dp-xml">
输出如下:<br > mb_substr:我是一串比较<br > mb_strcut:我是</br ></br >
需要注意的是,PHP字符串mbstring并不是PHP核心函数,使用前需要确保在php编译模块时加入mbstring的支持:<br > (1)编译时使用–enable-mbstring<br > (2)修改/usr/local/lib/php.inc<br > default_charset = “zh-cn”<br > mbstring.language = zh-cn<br > mbstring.internal_encoding =zh-cn</br ></br ></br ></br ></br >
PHP字符串mbstring类库内容比较多,还包括mb_ send_ mail 之类的email处理函数等
配置mbstring扩展
首先确保php安装目录下的ext子目录存在php_mbstring.dll 文件。然后编辑php.ini文件:
;extension=php_mbstring.dll 去掉分号 extension=php_mbstring.dll
把输出处理程序设为mbstring对应。 ;output_handler = output_handler = "mb_output_handler"
设定文字集为UTF-8。 ;default_charset = "iso-8859-1" default_charset = "UTF-8"
设置mbstring的语言为Chinese ;mbstring.language = Japanese mbstring.language = Chinese
设置mbstring的内部编码为UTF-8。 ;mbstring.internal_encoding = EUC-JP mbstring.internal_encoding = UTF-8
设置mbstring的输入文字编码为自动判别方式。 ;mbstring.http_input = auto mbstring.http_input = auto
把mbstring输出文字编码设为UTF-8。 ;mbstring.http_output = SJIS mbstring.http_output = UTF-8
激活mbstring的文字编码自动变换方式。 ;mbstring.encoding_translation = Off mbstring.encoding_translation = On
mbstring库 全称是Multi-Byte String 即各种语言都有自己的编码,他们的字节数是不一样的,目前php内部的编码只支持ISO-8859-*, EUC-JP, UTF-8其他的编码的语言是没办法在php程序上正确显示的。
解决的方法就是通过php的mbstring函数库来解决其安装是在编译php的时候加上--enable-mbstring=?
"="后面就是跟需要支持的语言,j具体参数如下:--enable-mbstring=cn for Simplified Chinese support, --enable-mbstring=tw for Traditional Chinese support, --enable-mbstring=kr for Korean support, --enable-mbstring=ru for Russian support, and --enable-mbstring=ja for Japanese support.“没有发现PHP 的扩展设置mbstring,而当前系统好像在使用宽字符集。没有mbstring
扩展的phpMyAdmin 不能正确识别字符串,可能产生不可意料的结果.”
这是因为我们在装PHP的时候没有把mbstring模块加上。
在win下很简单啦,只要到配置文件里把mbstring.dll前面的分号去掉,并把文件放到相应的地方就可以了,在linux下就不同了,但是也很简单。只要在编译PHP的时候加上参数
--with-mbstring --enable-mbstring=all
就可以了。
使php支持mbstring库的更多相关文章
- Qone 正式开源,使 javascript 支持 .NET LINQ
Qone 下一代 Web 查询语言,使 javascript 支持 LINQ Github: https://github.com/dntzhang/qone 缘由 最近刚好修改了腾讯文档 Excel ...
- Android百分比支持布局库的使用和源码分析
Android-percent-support这个库 描述下这个support-lib. 这个库提供了: 两种布局供大家使用: PercentRelativeLayout.PercentFrameLa ...
- 记一次在mac上源码编译curl,使其支持NSS的过程
一.背景 在一次学习https原理的过程中,希望客户端指定特定的cipher suites来抓包分析SSL/TLS的握手过程,就想到了使用curl工具,而不是使用浏览器. 接下来使用man curl找 ...
- Apache下开启SSI配置使html支持include包含
写页面的同学通常会遇到这样的烦恼,就是页面上的 html 标签越来越多的时候,寻找指定的部分就会很困难,那么能不能像 javascript 一样写在不同的文件中引入呢?答案是有的,apache 能做到 ...
- Linux下安装libiconv使php支持iconv函数
libiconv组件安装好了可以让我们php支持iconv函数了,这个函数的作用就是字符编码强制转换了,下面和111cn小编一起来看一个Linux中安装libiconv使php支持iconv函数的例子 ...
- Cocos2d-x 对于中文的支持-----iconv库
Cocos2d-x 对于中文的支持-----iconv库 转自:http://momowing.diandian.com/post/2013-01-16/40047183777 Jetion: 我们在 ...
- 2.移植3.4内核-使内核支持烧写yaffs2
在上章-制作文件系统,并使内核成功启动jffs2文件系统了 本章便开始使内核支持烧写yaffs2文件系统 1.首先获取yaffs2源码(参考git命令使用详解) cd /work/nfs_root g ...
- Atom 编辑器安装 linter-eslint 插件,并配置使其支持 vue 文件中的 js 格式校验
安装方式有如下几种. 1.最常用的安装方式. # 进入atom插件文件夹 cd ~/.atom/packages/ # git clone 插件源文件 git clone https://github ...
- 使HTML5支持RTSP流 微信直播RTSP流 微信播放RTSP直播流(HTML5播放rtsp,web播放rtsp,微信支持rtsp)
一.大家都知道HTML5的VIDEO可以播放视频,但是H5不支持RTSP播放,所以需要中间件! 二.我们经理长年的努力,开发了HTML5支持RTSP的中间件,使HTML5支持RTSP直播! 三.不卡顿 ...
随机推荐
- 堆栈中的EIP EBP ESP
EIP,EBP,ESP都是系统的寄存器,里面存的都是些地址. 为什么要说这三个指针,是因为我们系统中栈的实现上离不开他们三个. 我们DC上讲过栈的数据结构,主要有以下特点: 后进先处.(这个强调 ...
- 使用静态变量的方法求n!
下面的程序可以输出1-5的阶乘值,如果需要把5改为n,则可求出1-n的阶乘值. void main() { setvbuf(stdout,NULL,_IONBF,); int fac(int n); ...
- uva 11174
刘书上例题 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> # ...
- linux服务器重启服务命令说明文档
(前提是电脑上面已经安装好了ssh软件~!)输入ip,用户名,端口(默认22) 输入密码,登陆成功之后, 转入到/usr/local/tomcat/bin 目录,输入命令行: [root@yangch ...
- HDU 2544 最短路(模板题)
求1到N的最短路径,模板题,以1为源点,用dijkstra算法(可以用优先级队列优化) #include <iostream> #include <algorithm> #in ...
- poj 3270 Cow Sorting
思路:仔细读题,看到FARMER是两两交换牛的顺序进行排序的话,应该就往置换上靠拢,而这个题果然是置换的应用(有的解题报告上说是置换群,其实这只是单个置换,不用让它构成群).我们来将这些无序的牛抽象成 ...
- linux入门教程(五) Linux系统的远程登录
首先要说一下,该部分内容对于linux初学者来讲并不是特别重要的,可以先跳过该章节,先学下一章,等学完后再回来看这一章. Linux大多应用于服务器,而服务器不可能像PC一样放在办公室,它们是放在ID ...
- JVM基础学习
public class TestJVM { // 运行时数据区[方法区.堆.程序计数器.虚拟机栈.本地方法栈] private static int _1M = 1024 * 1024; publi ...
- 欧拉工程第57题:Square root convergents
题目链接 Java程序 package projecteuler51to60; import java.math.BigInteger; import java.util.Iterator; impo ...
- 毕向东JAVA视频讲解(第七课)
构造函数:构建创造对象时调用的函数.作用:可以给对象进行初始化. 创建对象都必须要通过构造函数初始化. 一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数. 如果在类中定义了指定的 ...