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 相关文章推荐
实用函数4
Nov 08 PHP
简单的PHP图片上传程序
Mar 27 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
php 过滤器实现代码
Aug 09 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
php简单分页类实现方法
Feb 26 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
PHP抽象类基本用法示例
Dec 28 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
JavaScript版代码高亮
2006/06/26 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
JS中操作JSON总结
2020/12/06 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
webpack4.x打包过程详解
2018/07/18 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
小程序实现列表多个批量倒计时
2021/01/29 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
Django接受前端数据的几种方法总结
2016/11/04 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
学习python分支结构
2019/05/17 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
学python最电脑配置有要求么
2020/07/05 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
python 实现性别识别
2020/11/21 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
团员学习总结的自我评价范文
2013/10/14 职场文书
关于毕业的中学校园广播稿
2014/01/26 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
人大代表选举标语
2014/10/07 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
美元符号 $
2022/02/17 杂记