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类
Nov 25 PHP
PHP $_FILES函数详解
Mar 09 PHP
PHP 图片上传代码
Sep 13 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
PHP实现远程下载文件到本地
May 17 PHP
php中 $$str 中 "$$" 的详解
Jul 06 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
php使用crypt()函数进行加密
Jun 08 PHP
PHP Trait代码复用类与多继承实现方法详解
Jun 17 PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 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
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
node中的session的具体使用
2018/09/14 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
python中list循环语句用法实例
2014/11/10 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
.net面试题
2015/12/22 面试题
银行职业规划书范文
2013/12/28 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
党支部承诺书范文
2014/03/28 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
人与自然观后感
2015/06/16 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby