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)方法如下:
一般來(lái)說(shuō),中文共有三種排序方式:
1.根據(jù)拼音排序;
2.根據(jù)筆畫(huà)排序;
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è)問(wèn)題不解決,那么MySQL將無(wú)法實(shí)際處理中文。 出現(xiàn)這個(gè)問(wèn)題的原因是因?yàn)镸ySQL在查詢字符串時(shí)是大小寫(xiě)不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,因此在比較過(guò)程中中文編碼字符大小寫(xiě)轉(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 來(lái)加入多個(gè)字符集。
如果不想對(duì)表結(jié)構(gòu)進(jìn)行修改或者重新編譯MySQL,也可以在查詢語(yǔ)句的 order by 部分使用 CONVERT 函數(shù)。比如
復(fù)制代碼 代碼如下:select * from mytable order by CONVERT(chineseColumnName USING gbk);
希望本文所述對(duì)大家的PHP+MySQL程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- Mysql數(shù)據(jù)庫(kù)編碼問(wèn)題 (修改數(shù)據(jù)庫(kù),表,字段編碼為utf8)
- 修改mysql5.5默認(rèn)編碼(圖文步驟修改為utf-8編碼)
- MySql修改數(shù)據(jù)庫(kù)編碼為UTF8避免造成亂碼問(wèn)題
- MySQL GBK→UTF-8編碼轉(zhuǎn)換
- 查看修改mysql編碼方式讓它支持中文(gbk或者utf8)
- MYSQL數(shù)據(jù)庫(kù)使用UTF-8中文編碼亂碼的解決辦法
- php頁(yè)面,mysql數(shù)據(jù)庫(kù)轉(zhuǎn)utf-8亂碼,utf-8編碼問(wèn)題總結(jié)
- mysql默認(rèn)編碼為UTF-8 通過(guò)修改my.ini實(shí)現(xiàn)方法
- Window 下安裝Mysql5.7.17 及設(shè)置編碼為utf8的方法
- windows下mysql 5.7版本中修改編碼為utf-8的方法步驟
相關(guān)文章
-
PHP實(shí)現(xiàn)HTML頁(yè)面靜態(tài)化的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)HTML頁(yè)面靜態(tài)化的方法,分享了靜態(tài)處理的方法,靜態(tài)處理后的優(yōu)勢(shì),并提供了多種靜態(tài)的方法,感興趣的小伙伴們可以參考一下 2015-11-11
-
PHP 5.3新特性命名空間規(guī)則解析及高級(jí)功能
本文介紹了PHP命名空間的一些術(shù)語(yǔ),其解析規(guī)則,以及一些高級(jí)功能的應(yīng)用,希望能夠幫助讀者在項(xiàng)目中真正使用命名空間。 2010-03-03
-
jquery+php實(shí)現(xiàn)導(dǎo)出datatables插件數(shù)據(jù)到excel的方法
這篇文章主要介紹了jquery+php實(shí)現(xiàn)導(dǎo)出datatables插件數(shù)據(jù)到excel的方法,實(shí)例分析了jquery插件datatables的使用方法與php導(dǎo)出datatables數(shù)據(jù)到Excel的技巧,需要的朋友可以參考下 2015-07-07
-
PHP中$_FILES的使用方法及注意事項(xiàng)說(shuō)明
本篇文章主要是對(duì)PHP中$_FILES的使用方法及注意事項(xiàng)進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助 2014-02-02
-
PHP生成各種隨機(jī)驗(yàn)證碼的方法總結(jié)【附demo源碼】
這篇文章主要介紹了PHP生成各種隨機(jī)驗(yàn)證碼的方法,結(jié)合具體實(shí)例形式總結(jié)分析了php常用的生成驗(yàn)證碼操作相關(guān)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下 2017-06-06
-
PHP動(dòng)態(tài)創(chuàng)建Web站點(diǎn)的方法
在這一篇中我寫(xiě)了一些動(dòng)態(tài)創(chuàng)建Web站點(diǎn)的一些內(nèi)容,例如黏性表單、發(fā)送電子郵件、日期函數(shù)等。希望能對(duì)大家有所幫助,別忘了好評(píng)哦。 2011-08-08
-
PHP獲取數(shù)組中重復(fù)最多的元素的實(shí)現(xiàn)方法
這篇文章主要介紹了PHP獲取數(shù)組中重復(fù)最多的元素的實(shí)現(xiàn)方法,通過(guò)一個(gè)自定義函數(shù)遍歷數(shù)組實(shí)現(xiàn)這一功能,是非常使用的技巧,需要的朋友可以參考下 2014-11-11
-
PHP經(jīng)典設(shè)計(jì)模式之依賴注入定義與用法詳解
這篇文章主要介紹了PHP經(jīng)典設(shè)計(jì)模式之依賴注入,結(jié)合實(shí)例形式分析了php依賴注入的定義、原理與用法,需要的朋友可以參考下 2019-05-05
-
PHP設(shè)計(jì)模式之抽象工廠模式實(shí)例分析
這篇文章主要介紹了PHP設(shè)計(jì)模式之抽象工廠模式,結(jié)合實(shí)例形式分析了php抽象工廠模式的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下 2019-03-03
最新評(píng)論
本文實(shí)例講述了PHP與MYSQL中UTF8編碼的中文排序方法,分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
一般來(lái)說(shuō),中文共有三種排序方式:
1.根據(jù)拼音排序;
2.根據(jù)筆畫(huà)排序;
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è)問(wèn)題不解決,那么MySQL將無(wú)法實(shí)際處理中文。 出現(xiàn)這個(gè)問(wèn)題的原因是因?yàn)镸ySQL在查詢字符串時(shí)是大小寫(xiě)不敏感的,在編繹MySQL時(shí)一般以ISO-8859字符集作為默認(rèn)的字符集,因此在比較過(guò)程中中文編碼字符大小寫(xiě)轉(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 來(lái)加入多個(gè)字符集。
如果不想對(duì)表結(jié)構(gòu)進(jìn)行修改或者重新編譯MySQL,也可以在查詢語(yǔ)句的 order by 部分使用 CONVERT 函數(shù)。比如
希望本文所述對(duì)大家的PHP+MySQL程序設(shè)計(jì)有所幫助。
- Mysql數(shù)據(jù)庫(kù)編碼問(wèn)題 (修改數(shù)據(jù)庫(kù),表,字段編碼為utf8)
- 修改mysql5.5默認(rèn)編碼(圖文步驟修改為utf-8編碼)
- MySql修改數(shù)據(jù)庫(kù)編碼為UTF8避免造成亂碼問(wèn)題
- MySQL GBK→UTF-8編碼轉(zhuǎn)換
- 查看修改mysql編碼方式讓它支持中文(gbk或者utf8)
- MYSQL數(shù)據(jù)庫(kù)使用UTF-8中文編碼亂碼的解決辦法
- php頁(yè)面,mysql數(shù)據(jù)庫(kù)轉(zhuǎn)utf-8亂碼,utf-8編碼問(wèn)題總結(jié)
- mysql默認(rèn)編碼為UTF-8 通過(guò)修改my.ini實(shí)現(xiàn)方法
- Window 下安裝Mysql5.7.17 及設(shè)置編碼為utf8的方法
- windows下mysql 5.7版本中修改編碼為utf-8的方法步驟
相關(guān)文章
PHP實(shí)現(xiàn)HTML頁(yè)面靜態(tài)化的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)HTML頁(yè)面靜態(tài)化的方法,分享了靜態(tài)處理的方法,靜態(tài)處理后的優(yōu)勢(shì),并提供了多種靜態(tài)的方法,感興趣的小伙伴們可以參考一下2015-11-11PHP 5.3新特性命名空間規(guī)則解析及高級(jí)功能
本文介紹了PHP命名空間的一些術(shù)語(yǔ),其解析規(guī)則,以及一些高級(jí)功能的應(yīng)用,希望能夠幫助讀者在項(xiàng)目中真正使用命名空間。2010-03-03jquery+php實(shí)現(xiàn)導(dǎo)出datatables插件數(shù)據(jù)到excel的方法
這篇文章主要介紹了jquery+php實(shí)現(xiàn)導(dǎo)出datatables插件數(shù)據(jù)到excel的方法,實(shí)例分析了jquery插件datatables的使用方法與php導(dǎo)出datatables數(shù)據(jù)到Excel的技巧,需要的朋友可以參考下2015-07-07PHP中$_FILES的使用方法及注意事項(xiàng)說(shuō)明
本篇文章主要是對(duì)PHP中$_FILES的使用方法及注意事項(xiàng)進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02PHP生成各種隨機(jī)驗(yàn)證碼的方法總結(jié)【附demo源碼】
這篇文章主要介紹了PHP生成各種隨機(jī)驗(yàn)證碼的方法,結(jié)合具體實(shí)例形式總結(jié)分析了php常用的生成驗(yàn)證碼操作相關(guān)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-06-06PHP動(dòng)態(tài)創(chuàng)建Web站點(diǎn)的方法
在這一篇中我寫(xiě)了一些動(dòng)態(tài)創(chuàng)建Web站點(diǎn)的一些內(nèi)容,例如黏性表單、發(fā)送電子郵件、日期函數(shù)等。希望能對(duì)大家有所幫助,別忘了好評(píng)哦。2011-08-08PHP獲取數(shù)組中重復(fù)最多的元素的實(shí)現(xiàn)方法
這篇文章主要介紹了PHP獲取數(shù)組中重復(fù)最多的元素的實(shí)現(xiàn)方法,通過(guò)一個(gè)自定義函數(shù)遍歷數(shù)組實(shí)現(xiàn)這一功能,是非常使用的技巧,需要的朋友可以參考下2014-11-11PHP經(jīng)典設(shè)計(jì)模式之依賴注入定義與用法詳解
這篇文章主要介紹了PHP經(jīng)典設(shè)計(jì)模式之依賴注入,結(jié)合實(shí)例形式分析了php依賴注入的定義、原理與用法,需要的朋友可以參考下2019-05-05PHP設(shè)計(jì)模式之抽象工廠模式實(shí)例分析
這篇文章主要介紹了PHP設(shè)計(jì)模式之抽象工廠模式,結(jié)合實(shí)例形式分析了php抽象工廠模式的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-03-03