PHP与MYSQL中UTF8 中文排序例子

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的(www.111cn.net)很多版本中都存在。
如果这个问题不解决,那么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);
from:http://www.111cn.net/phper/php-cy/67815.htm

时间: 2024-08-28 13:37:03

PHP与MYSQL中UTF8 中文排序例子的相关文章

mysql中的中文乱码处理

备注:来自老男孩课程的学习总结 1.MySQL中添加中文数据乱码演示 a. 创建一个oldboy测试数据库并查看建表语句 模拟创建一个默认的字符集数据库 create database oldboy default character set latin1 collate latin1_swedish_ci; 2 创建一个表 mysql> create table student ( id int(4) not null auto_increment, name char(20) not nul

Jsp与mysql中的中文显示问题

在servlet层,要有 response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); 在jsp层要有 <%@ page language="java" import="com.lxn.manager2.*,java.util.*;" contentType="text/html; chars

mysql中插入中文数据

今天遇到的问题使mysql中插入中文数据后显示乱码,我在mysql中插入中文的时候,可以插入可是select的时候却无法显示,为此我写下这篇博客用于解决mysql插入中文. 由于有些截图没有记录下来,但是为了说明问题,我借用了别人的图,主要是为了完整的描述问题,在没有任何修改的时候,我们可以在mysql命令行中敲入以下指令,其结果如下所示: show variables like 'character%'; 可以看到,以上的编码并不支持中文,所以我们需要改变他们的编码(我这里是改成了utf8格式

mysql 中的中文乱码

如果查看mysql数据库中的数据时发现中文乱码,可以试试: 1.show variables like 'charact%' 使用set 命令(set character_set_client=gbk;),改为上图 mysql 中的中文乱码

MySQL中utf8 &amp;&amp; utf8mb4

参考文章 记住,永远不要在MySQL中使用“utf8” 数据库编码,从utf8转到utf8mb4 MySQL中utf8与utf8mb4的区别 原文地址:https://www.cnblogs.com/gjh99/p/12048308.html

mysql中utf8和utf8mb4区别

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换.当然,为了节省空间,一般情况下使用utf8也就够了. 二.内容描述 那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了.三个字节的 UTF-8 最

mysql使用utf8中文乱码解决方法

最近,我在做一个项目的部署,这个项目是已nginx为前端代理两个tomcat的节点,通过mysql-proxy代理访问两台主从的mysql数据库. 整个项目搭建部署完成,进行测试,发现打开网页出现中文乱码.好吧,我进行修改. 开始以为是mysql数据库配置有问题,查看mysql的配置文件my.conf,内容如下: [mysqld] datadir=/usr/local/mysql/data socket=/tmp/mysql.sock user=mysql skip-character-set-

MySQL中order by排序时,数据存在null咋办

order by排序是最常用的功能,但是排序有时会遇到数据为空null的情况,这样排序就会乱了,这里以MySQL为例,记录我遇到的问题和解决思路. 问题: 网页要实现table的行鼠标拖拽排序,我用AngularJs集成了一个TableDnD开源插件,可以实现,然后在数据库表中增加一个排序字段indexId,但是原来的大量数据是没有排序过的,所以该字段为null. 这样order by时,为null的数据就会排在最前边. 写个测试表模拟一下,如下效果: 解决办法: 最优办法:利用MySQL中的一

myeclispe中向mysql中插入中文数据出现??问题解决办法

或许很多人会出现??这种令人头痛的mysql的中文乱码问题:解决如下: 1.先对于新建的数据库要设置默认的字符集为UTF-8 create database mydb default character set utf8 collate utf8_general_ci; 2.然后对于想对应的表进行设置默认字符集 CREATE TABLE IF NOT EXISTS `mydb` ( `username` varchar(64) NOT NULL, `userid` int(11) NOT NUL