PHP与MYSQL中UTF8编码的中文排序实例


Posted in PHP onOctober 21, 2014

本文实例讲述了PHP与MYSQL中UTF8编码的中文排序方法,分享给大家供大家参考。具体实现方法如下:

一般来说,中文共有三种排序方式:

1.根据拼音排序;
2.根据笔画排序;
3.根据偏旁排序。

系统的默认排序方式为拼音排序了,这个也是我们常用的,下面介绍的就是按拼音排序了

1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行。用gbk和gb2312可以。这跟几种格式的编码有关系。gbk和gb2312本身的编码就是用拼音排序的。

function utf8_array_asort(&$array)

{

if(!isset($array) || !is_array($array))

{

return false;

}

foreach($array as $k=>$v)

{

$array[$k] = iconv('UTF-8', 'GBK//IGNORE',$v);

}

asort($array);

foreach($array as $k=>$v)

{

$array[$k] = iconv('GBK', 'UTF-8//IGNORE', $v);

}

return true;

}

2. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的。 这种情况在MySQL的很多版本中都存在。

如果这个问题不解决,那么MySQL将无法实际处理中文。 出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。

解决方法:

对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。

如果你使用源码编译MySQL,可以编译MySQL时使用 --with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了(默认的是latin1)。也可以用 extra-charsets=gb2312,gbk 来加入多个字符集。

如果不想对表结构进行修改或者重新编译MySQL,也可以在查询语句的 order by 部分使用 CONVERT 函数。比如

select * from mytable order by CONVERT(chineseColumnName USING gbk);

希望本文所述对大家的PHP+MySQL程序设计有所帮助。

PHP 相关文章推荐
php 远程关机操作的代码
Dec 05 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
jQuery 源码分析笔记
May 25 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
Oct 31 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
PHP实现变色验证码实例
Jan 06 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 #PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 #PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 #PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 #PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
Oct 21 #PHP
php读取目录及子目录下所有文件名的方法
Oct 20 #PHP
php中的字符编码转换函数用法示例
Oct 20 #PHP
You might like
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
对numpy中的where方法嵌套使用详解
2018/10/31 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
婚庆司仪主持词
2014/03/15 职场文书
十周年庆典策划方案
2014/06/03 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
综治工作心得体会
2014/09/11 职场文书
先进员工事迹材料
2014/12/20 职场文书
道德与公民自我评价
2015/03/09 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS