PHP與MYSQL中UTF8編碼的中文排序?qū)嵗?/h1>
更新時(shí)間:2014年10月21日 10:01:00 投稿:shichen2014
這篇文章主要介紹了PHP與MYSQL中UTF8編碼的中文排序方法,實(shí)例講述了根據(jù)拼音進(jìn)行排序的方法,需要的朋友可以參考下
本文實(shí)例講述了PHP與MYSQL中UTF8編碼的中文排序方法,分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
一般來說,中文共有三種排序方式:
1.根據(jù)拼音排序;
2.根據(jù)筆畫排序;
3.根據(jù)偏旁排序。
系統(tǒng)的默認(rèn)排序方式為拼音排序了,這個(gè)也是我們常用的,下面介紹的就是按拼音排序了
1. 需要在php數(shù)組中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行。用gbk和gb2312可以。這跟幾種格式的編碼有關(guān)系。gbk和gb2312本身的編碼就是用拼音排序的。
復(fù)制代碼 代碼如下: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中,我們經(jīng)常會(huì)對(duì)一個(gè)字段進(jìn)行排序查詢,但進(jìn)行中文排序和查找的時(shí)候,對(duì)漢字的排序和查找結(jié)果往往都是錯(cuò)誤的。 這種情況在MySQL的很多版本中都存在。
如果這個(gè)問題不解決,那么MySQL將無法實(shí)際處理中文。 出現(xiàn)這個(gè)問題的原因是因?yàn)镸ySQL在查詢字符串時(shí)是大小寫不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,因此在比較過程中中文編碼字符大小寫轉(zhuǎn)換造成了這種現(xiàn)象。
解決方法:
對(duì)于包含中文的字段加上"binary"屬性,使之作為二進(jìn)制比較,例如將"name char(10)"改成"name char(10)binary"。
如果你使用源碼編譯MySQL,可以編譯MySQL時(shí)使用 --with--charset=gbk 參數(shù),這樣MySQL就會(huì)直接支持中文查找和排序了(默認(rèn)的是latin1)。也可以用 extra-charsets=gb2312,gbk 來加入多個(gè)字符集。
如果不想對(duì)表結(jié)構(gòu)進(jìn)行修改或者重新編譯MySQL,也可以在查詢語句的 order by 部分使用 CONVERT 函數(shù)。比如
復(fù)制代碼 代碼如下:select * from mytable order by CONVERT(chineseColumnName USING gbk);
希望本文所述對(duì)大家的PHP+MySQL程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- Mysql數(shù)據(jù)庫編碼問題 (修改數(shù)據(jù)庫,表,字段編碼為utf8)
- 修改mysql5.5默認(rèn)編碼(圖文步驟修改為utf-8編碼)
- MySql修改數(shù)據(jù)庫編碼為UTF8避免造成亂碼問題
- MySQL GBK→UTF-8編碼轉(zhuǎn)換
- 查看修改mysql編碼方式讓它支持中文(gbk或者utf8)
- MYSQL數(shù)據(jù)庫使用UTF-8中文編碼亂碼的解決辦法
- php頁面,mysql數(shù)據(jù)庫轉(zhuǎn)utf-8亂碼,utf-8編碼問題總結(jié)
- mysql默認(rèn)編碼為UTF-8 通過修改my.ini實(shí)現(xiàn)方法
- Window 下安裝Mysql5.7.17 及設(shè)置編碼為utf8的方法
- windows下mysql 5.7版本中修改編碼為utf-8的方法步驟
相關(guān)文章
-
php str_replace替換指定次數(shù)的方法詳解
本篇文章主要介紹了php str_replace替換指定次數(shù)的方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧 2017-05-05
-
php 數(shù)學(xué)運(yùn)算驗(yàn)證碼實(shí)現(xiàn)代碼
php 數(shù)學(xué)運(yùn)算驗(yàn)證碼實(shí)現(xiàn)代碼 2009-10-10
-
2020最新版 PhpStudy V8.1版本下載安裝使用詳解
這篇文章主要介紹了2020最新版 PhpStudy V8.1版本下載安裝使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧 2020-10-10
-
PHP與Java對(duì)比學(xué)習(xí)日期時(shí)間函數(shù)
本文給大家介紹的是從Java和PHP進(jìn)行對(duì)比復(fù)習(xí)了下日期時(shí)間的處理函數(shù),并給出了一些示例,希望對(duì)大家能夠有所幫助 2016-07-07
最新評(píng)論
本文實(shí)例講述了PHP與MYSQL中UTF8編碼的中文排序方法,分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
一般來說,中文共有三種排序方式:
1.根據(jù)拼音排序;
2.根據(jù)筆畫排序;
3.根據(jù)偏旁排序。
系統(tǒng)的默認(rèn)排序方式為拼音排序了,這個(gè)也是我們常用的,下面介紹的就是按拼音排序了
1. 需要在php數(shù)組中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行。用gbk和gb2312可以。這跟幾種格式的編碼有關(guān)系。gbk和gb2312本身的編碼就是用拼音排序的。
{
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中,我們經(jīng)常會(huì)對(duì)一個(gè)字段進(jìn)行排序查詢,但進(jìn)行中文排序和查找的時(shí)候,對(duì)漢字的排序和查找結(jié)果往往都是錯(cuò)誤的。 這種情況在MySQL的很多版本中都存在。
如果這個(gè)問題不解決,那么MySQL將無法實(shí)際處理中文。 出現(xiàn)這個(gè)問題的原因是因?yàn)镸ySQL在查詢字符串時(shí)是大小寫不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,因此在比較過程中中文編碼字符大小寫轉(zhuǎn)換造成了這種現(xiàn)象。
解決方法:
對(duì)于包含中文的字段加上"binary"屬性,使之作為二進(jìn)制比較,例如將"name char(10)"改成"name char(10)binary"。
如果你使用源碼編譯MySQL,可以編譯MySQL時(shí)使用 --with--charset=gbk 參數(shù),這樣MySQL就會(huì)直接支持中文查找和排序了(默認(rèn)的是latin1)。也可以用 extra-charsets=gb2312,gbk 來加入多個(gè)字符集。
如果不想對(duì)表結(jié)構(gòu)進(jìn)行修改或者重新編譯MySQL,也可以在查詢語句的 order by 部分使用 CONVERT 函數(shù)。比如
希望本文所述對(duì)大家的PHP+MySQL程序設(shè)計(jì)有所幫助。
- Mysql數(shù)據(jù)庫編碼問題 (修改數(shù)據(jù)庫,表,字段編碼為utf8)
- 修改mysql5.5默認(rèn)編碼(圖文步驟修改為utf-8編碼)
- MySql修改數(shù)據(jù)庫編碼為UTF8避免造成亂碼問題
- MySQL GBK→UTF-8編碼轉(zhuǎn)換
- 查看修改mysql編碼方式讓它支持中文(gbk或者utf8)
- MYSQL數(shù)據(jù)庫使用UTF-8中文編碼亂碼的解決辦法
- php頁面,mysql數(shù)據(jù)庫轉(zhuǎn)utf-8亂碼,utf-8編碼問題總結(jié)
- mysql默認(rèn)編碼為UTF-8 通過修改my.ini實(shí)現(xiàn)方法
- Window 下安裝Mysql5.7.17 及設(shè)置編碼為utf8的方法
- windows下mysql 5.7版本中修改編碼為utf-8的方法步驟
相關(guān)文章
php str_replace替換指定次數(shù)的方法詳解
本篇文章主要介紹了php str_replace替換指定次數(shù)的方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-05-05
php 數(shù)學(xué)運(yùn)算驗(yàn)證碼實(shí)現(xiàn)代碼
php 數(shù)學(xué)運(yùn)算驗(yàn)證碼實(shí)現(xiàn)代碼2009-10-10
2020最新版 PhpStudy V8.1版本下載安裝使用詳解
這篇文章主要介紹了2020最新版 PhpStudy V8.1版本下載安裝使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
PHP與Java對(duì)比學(xué)習(xí)日期時(shí)間函數(shù)
本文給大家介紹的是從Java和PHP進(jìn)行對(duì)比復(fù)習(xí)了下日期時(shí)間的處理函數(shù),并給出了一些示例,希望對(duì)大家能夠有所幫助2016-07-07

