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 相关文章推荐
phpMyAdmin 安装教程全攻略
Mar 19 PHP
php打造属于自己的MVC框架
Mar 07 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
file_get_contents("php://input", "r")实例介绍
Jul 01 PHP
解析PHP 5.5 新特性
Jul 02 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
PHP的pcntl多进程用法实例
Mar 19 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
PHP微信API接口类
Aug 22 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP排序二叉树基本功能实现方法示例
May 26 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
JS打开新窗口的2种方式
2013/04/18 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
Python中使用中文的方法
2011/02/19 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
python 列表降维的实例讲解
2018/06/28 Python
Python实现八皇后问题示例代码
2018/12/09 Python
深入了解NumPy 高级索引
2020/07/24 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
如何强制垃圾回收
2015/10/06 面试题
如何写毕业求职自荐信
2013/11/06 职场文书
行政二审代理词
2015/05/25 职场文书
2015国庆节感想
2015/08/04 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
Django 如何实现文件上传下载
2021/04/08 Python