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原理之Session Gc的一个小概率Notice
Apr 12 PHP
php学习之简单计算器实现代码
Jun 09 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
PHP基于单例模式实现的mysql类
Jan 09 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
PHP测试框架PHPUnit组织测试操作示例
May 28 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
thinkPHP5框架接口写法简单示例
Aug 05 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 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
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
php制作动态随机验证码
2015/02/12 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
Python 从相对路径下import的方法
2018/12/04 Python
PyQt5组件读取参数的实例
2019/06/25 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
计算机应用专业推荐信
2013/11/13 职场文书
教师评优事迹材料
2014/01/10 职场文书
运动会广播稿30字
2014/01/21 职场文书
求职自荐信的格式
2014/04/07 职场文书
会计专业自荐书
2014/07/08 职场文书
迎新生标语大全
2014/10/06 职场文书
财务出纳岗位职责
2015/03/31 职场文书
医院感染管理制度
2015/08/05 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫