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 xml留言板 xml存储数据的简单例子
Aug 24 PHP
JS 网站性能优化笔记
May 24 PHP
php站内搜索并高亮显示关键字的实现代码
Dec 29 PHP
eAccelerator的安装与使用详解
Jun 13 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
10个简化PHP开发的工具
Dec 25 PHP
PHP的Yii框架中View视图的使用进阶
Mar 29 PHP
php实现的http请求封装示例
Nov 08 PHP
php判断是否连接上网络的方法实例详解
Dec 14 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 17 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 strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
javascript 正则表达式去空行方法
2017/01/24 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
node.js中cluster的使用教程
2017/06/09 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
python负载均衡的简单实现方法
2018/02/04 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python hashlib模块加密过程解析
2019/11/05 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
python实现最速下降法
2020/03/24 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
PHP经典面试题
2016/09/03 面试题
解决方案设计综合面试题
2015/08/31 面试题
制药工程专业毕业生推荐信
2013/12/24 职场文书
婚礼主持词开场白
2014/03/13 职场文书
嘉宾邀请函
2015/01/31 职场文书
研究生导师推荐信
2015/03/25 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL