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桌面中心(二) 数据库写入
Mar 11 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
php之对抗Web扫描器的脚本技巧
Oct 01 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
php中eval函数的危害与正确禁用方法
Jun 30 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
Aug 17 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 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中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
初识PHP
2014/09/28 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
Sea.JS知识总结
2016/05/05 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
webpack源码之loader机制详解
2018/04/06 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
python安装教程
2018/02/28 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
学生自我评语大全
2014/04/18 职场文书
百万英镑观后感
2015/06/09 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers