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 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
php随机输出名人名言的代码
Oct 07 PHP
PHP处理excel cvs表格的方法实例介绍
May 13 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
php查看一个变量的占用内存的实例代码
Mar 29 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 代码优化的42条建议 推荐
2009/09/25 PHP
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
php获取系统变量方法小结
2015/05/29 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
python3下载抖音视频的完整代码
2019/06/05 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
爱情寄语大全
2014/04/09 职场文书
中学生运动会口号
2014/06/07 职场文书
年终工作总结范文2014
2014/11/27 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
青年文明号申报材料
2014/12/23 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
Django 实现jwt认证的示例
2021/04/30 Python