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 相关文章推荐
初品cakephp 入门基础
Feb 16 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
php设置页面超时时间解决方法
Sep 22 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
php 函数使用可变数量的参数方法
May 02 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
Laravel 验证码认证学习记录小结
Dec 20 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
日本十大惊悚动漫
2020/03/04 日漫
推荐文章系统(一)
2006/10/09 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
php实现倒计时效果
2015/12/19 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
vue-cli之router基本使用方法详解
2017/10/17 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Python中的pprint折腾记
2015/01/21 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
Python实现注册登录系统
2017/08/08 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
Melissa香港官网:MDreams
2016/07/01 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android