• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysql 字符串长度计算实现代码(gb2312+utf8)

mysql 字符串长度计算实现代码(gb2312+utf8)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了字符串,长度计算等相关知识,希望本文的分享对您有所帮助

PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处

PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:

PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节。例:

$enStr = 'Hello,China!';
echo strlen($enStr); // 输出:12

而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。

gbk编码下每个中文字符所占字节为2,例:

$zhStr = '您好,中国!';
echo strlen($zhStr); // 输出:12

utf-8编码下每个中文字符所占字节为3,例:

$zhStr = '您好,中国!';
echo strlen($zhStr); // 输出:18

那么如何计算这组中文字符串的长度呢?有人可能会说gbk下获取中文字符串长度除以2,utf-8编码下除以3不就行了吗?但是您要考虑字符串并不老实,99%的情况会以中英混合的情况出现。

这是WordPress中的一段代码,主要思想就是先用正则将字符串分解为个体单元,然后再计算单元的个数即字符串的长度,代码如下(只能处理utf-8编码下的字符串):
代码如下:
$zhStr = '您好,中国!';
$str = 'Hello,中国!';

// 计算中文字符串长度
function utf8_strlen($string = null) {
// 将字符串分解为单元
preg_match_all("/./us", $string, $match);
// 返回单元个数
return count($match[0]);
}
echo utf8_strlen($zhStr); // 输出:6
echo utf8_strlen($str); // 输出:9

utf8_strlen – 获得UTF8编码的字符串的长度
代码如下:
/*
* 用于UTF8编码的程序
* 获得字符串的长度,一个中文表示3个长度
* itlearner注释
*/
function utf8_strlen($str) {
$count = 0;
for($i = 0; $i < strlen($str); $i++){
$value = ord($str[$i]);
if($value > 127) {
$count++;
if($value >= 192 && $value <= 223) $i++;
elseif($value >= 224 && $value <= 239) $i = $i + 2;
elseif($value >= 240 && $value <= 247) $i = $i + 3;
else die('Not a UTF-8 compatible string');
}
$count++;
}
return $count;
}
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • mysql整数数据类型深入解析
  • SQL字符串以及数字常用操作汇总
  • MySQL笔记之字符串函数的应用
  • 使用java处理字符串公式运算的方法
  • MySQL慢查询查找和调优测试
  • mysql截取函数常用方法使用说明
  • MySQL里实现类似SPLIT的分割字符串的函数
  • mysql查询字符串替换语句小结(数据库字符串替换)
  • mysql中取字符串中的数字的语句
  • MySQL的字符串函数使用说明

相关文章

  • 2017-05-11mysql建表常用sql语句个人经验分享
  • 2018-12-05MySQL中binlog日志文件的详细介绍
  • 2018-12-05Mysql数据库备份使用场景
  • 2018-12-05Oracle 创建用户及数据表的方法
  • 2017-05-11mysql触发器(Trigger)简明总结和使用实例
  • 2018-12-05有关事件分析内容的文章推荐
  • 2018-12-05排名前十的SQL和NoSQL数据库
  • 2018-12-05mysql数据库如何导出数据?
  • 2018-12-05MSSQL 首字母替换成大写字母
  • 2018-12-05Mysql使用sql语句在原内容后面增加内容的实例教程

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MongoDB学习(三)MongoDB shell 命令行的使用
    • MySQL中使用load data命令实现数据导入的方法
    • MySQL在cmd和python下的常用操作解析
    • 深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析
    • MySQL服务器连接过程浅析
    • mysql 的load data infile
    • 详解MySQL数据库优化的八种实现方法分享
    • Oracle数据库的安全策略
    • 详解mac使用homebrew安装MySQL无法登陆问题的解决办法
    • 使用cmd命令行窗口操作SqlServer的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有