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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
PHP输出控制功能在简繁体转换中的应用
Oct 09 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
用来解析.htpasswd文件的PHP类
Sep 05 PHP
php多文件上传下载示例分享
Feb 20 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
golang 调用 php7详解及实例
Jan 04 PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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读取xml实例代码
2010/01/28 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
php输出图像的方法实例分析
2017/02/16 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
很好用的js日历算法详细代码
2013/03/07 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
Python简单获取自身外网IP的方法
2016/09/18 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
教师推荐信范文
2013/11/24 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
「月刊Action」2022年5月号封面公开
2022/03/21 日漫