PHP与MYSQL中UTF8编码的中文排序实例
深入理解PHP与MySQL中的UTF-8编码中文排序方法
本文将详细PHP与MySQL中UTF-8编码的中文排序方法,尤其是根据拼音排序的实现方式。对于需要在处理中文数据时进行排序的朋友们,以下内容将提供有益的参考。
在PHP中,处理UTF-8编码的中文排序并非直接通过asort函数就能完成。因为UTF-8编码的中文在gbk和gb2312编码中的排序是按照拼音进行的,所以我们需要通过iconv函数将UTF-8编码转换为GBK编码进行排序,然后再转回UTF-8编码。相应的PHP函数如下:
```php
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;
}
```
而在MySQL中,对包含中文的字段进行排序查询时,可能会出现排序和查找结果错误的情况。这是由于MySQL在查询字符串时默认是大小写不敏感的,而且在编译MySQL时一般使用ISO-8859字符集作为默认字符集,这会导致中文编码字符在大小写转换过程中出现比较错误。
解决这个问题的方法有两种:一种是在包含中文的字段上添加"binary"属性,使之作为二进制比较。另一种方法是在查询语句的order by部分使用CONVERT函数。例如:
```sql
select from mytable order by CONVERT(chineseColumnName USING gbk);
```
如果不想修改表结构或重新编译MySQL,还可以通过在MySQL安装时设置字符集参数来直接支持中文查找和排序。在编译MySQL时使用 --with-charset=gbk 参数(默认的是latin1),或者添加extra-charsets=gb2,gbk来加入多个字符集。这样就可以让MySQL直接支持中文的查找和排序了。不过需要注意的是,这种方式需要对MySQL源码进行编译安装,对于大部分用户来说可能不太方便。因此在实际应用中,使用CONVERT函数的方法更为常见和实用。本文旨在提供详细的PHP+MySQL程序设计中的中文排序方法,希望对各位开发者有所帮助。
编程语言
- PHP与MYSQL中UTF8编码的中文排序实例
- PHP 简易输出CSV表格文件的方法详解
- 分享两段简单的JS代码防止SQL注入
- 在Ubuntu系统上安装Ghost博客平台的教程
- mysql 字段as详解及实例代码
- 浅谈EasyUI中Treegrid节点的删除
- SQL Server 海量数据导入的最快方法
- javascript模拟评分控件实现方法
- AngularJS中比较两个数组是否相同
- MySQL8下忘记密码后重置密码的办法(MySQL老方法不
- 将表数据生成Insert脚本 比较好用的生成插入语句
- 循环取值Request.QueryString的用法
- js判断手机号运营商的方法
- jQuery动态添加li标签并添加属性和绑定事件方法
- 微信小程序 获取javascript 里的数据
- phalcon model在插入或更新时会自动验证非空字段的