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中数组的三种排序方法分享
May 07 PHP
file_get_contents("php://input", "r")实例介绍
Jul 01 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
PHP base64编码后解码乱码的解决办法
Jun 19 PHP
destoon供应信息title调用出公司名称的方法
Aug 22 PHP
PHP中返回引用类型的方法
Apr 03 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
smarty的section嵌套循环用法示例
May 28 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
php 自定义错误日志实例详解
Nov 12 PHP
Thinkphp事务操作实例(推荐)
Apr 01 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 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的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
基本DOM节点操作
2017/01/17 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
基于python绘制科赫雪花
2018/06/22 Python
Tesserocr库的正确安装方式
2018/10/19 Python
10款最好的Python开发编辑器
2019/07/03 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
工程部经理岗位职责
2013/12/08 职场文书
会计辞职信范文
2014/01/15 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
java设计模式--七大原则详解
2021/07/21 Java/Android
MySQL分区表管理命令汇总
2022/03/21 MySQL
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers