PHP与MYSQL中UTF8 中文排序示例代码


Posted in PHP onOctober 23, 2014

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的(3water.com)很多版本中都存在。
如果这个问题不解决,那么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 相关文章推荐
提升PHP执行速度全攻略
Oct 09 PHP
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
PHP中list()函数用法实例简析
Jan 08 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
php cookie名使用点号(句号)会被转换
Oct 23 #PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 #PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 #PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 #PHP
10个实用的PHP正则表达式汇总
Oct 23 #PHP
PHP中怎样防止SQL注入分析
Oct 23 #PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 #PHP
You might like
php有效防止同一用户多次登录
2015/11/19 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
js 学习笔记(三)
2009/12/29 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
Python深入学习之对象的属性
2014/08/31 Python
django之session与分页(实例讲解)
2017/11/13 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
Python之Sklearn使用入门教程
2021/02/19 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
医生进修自我鉴定
2014/01/19 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
中秋节主持词
2014/04/02 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
解析Java中的static关键字
2021/06/14 Java/Android
德生BCL3000抢先使用感受和评价
2022/04/07 无线电