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 相关文章推荐
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
php代码运行时间查看类代码分享
Aug 06 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
PHP微框架Dispatch简介
Jun 12 PHP
php实现的Cookies操作类实例
Sep 24 PHP
摘自织梦CMS中的图片处理类
Aug 08 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 PHP
PHP实现发送微博消息功能完整示例
Dec 04 PHP
PHP 对象继承原理与简单用法示例
Apr 21 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常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
php session_decode函数用法讲解
2019/05/26 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
Python的Django框架中的表单处理示例
2015/07/17 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
幼儿园教师考核制度
2014/02/01 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js