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游戏编程25个脚本代码
Feb 08 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
php获取一个变量的名字的方法
Sep 05 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
laravel框架中视图的基本使用方法分析
Nov 23 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
用PHP制作静态网站的模板框架
2006/10/09 PHP
用PHP实现多级树型菜单
2006/10/09 PHP
php数组总结篇(一)
2008/09/30 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
PHP在线书签系统分享
2016/01/04 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
使用Python实现毫秒级抢单功能
2019/06/06 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
办公室员工岗位工作职责
2014/03/10 职场文书
小学生读书活动总结
2014/06/30 职场文书
班组拓展活动方案
2014/08/14 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
资料员岗位职责范本
2015/04/13 职场文书
建国大业观后感600字
2015/06/01 职场文书
会议主持词通用版
2019/04/02 职场文书
导游词之井冈山
2019/11/20 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
JS实现九宫格拼图游戏
2022/06/28 Javascript