2016-01-25 77 views
0

8編碼不工作當我從MySQL表中獲取數據時我在數據庫中有一些特殊字符無法獲取一些城市與特殊字符如Østfoldcity和Ærø所以當我輸入ostfold它沒有從數據庫中提取Østfold城市。而當我分別寫sia和cor時,我完全從db獲得希奧利艾和喬魯姆。UTF-8編碼在PHP中不工作

我有一個城市表我從這張表使用jquery autocomplete ajax獲取城市,所以當我輸入前三個字母時,它顯示了我在CodeIgniter框架中工作的相關字母列表。

我的設置笨 database.php中: -

$db['default']['char_set'] = 'utf8'; 
$db['default']['dbcollat'] = 'utf8_general_ci'; 

我的數據庫表中城市的欄目設置是: -

city_name(column name) varchar(100) utf8_general_ci(Collation) 

請幫我什麼事我不得不改變這是爲什麼呢我無法得到像Ø和Æ這樣的字符開頭的城市。

+0

你可以嘗試在那裏的城市LIKE%城市 – MadeInDreams

+0

你能告訴我們什麼是您當前查詢的使用字符輸出改變您的查詢選擇城市? – Rafael

+0

可以測試 print_r($ this-> db-> last_query()); 和大家分享一下吧? – Dave

回答

2

試試這段代碼,我希望這會解決您的問題。

file_exists(mb_convert_encoding("file_å.txt", "UTF-8")); 
+0

謝謝我的問題已經解決了這個問題。 – Stackfull

+0

@Stackfull:最受歡迎.. –

0

collation table沒有列出Æ等於A,它也沒有列出Ø等於O.

您沒有編碼問題(否則Ç orum = corum將不起作用),而是預期問題。你期望他們是平等的。通過整理表的定義,它們不是。

+0

所以要做到這一點我必須做的。 – Stackfull

+0

你可以嘗試做一個音譯功能,以取代Ø等於O,並「從名稱選擇名稱='Østfold'或名稱='Ostfold」 –

0

參見Reference

Ø = O只有一個歸類:utf8_unicode_520_ci;大多數將其視爲OP之間的字母。一些在Z之後整理它。

Æ是另一回事。它與utf8_unicode_520_ci中的兩個字母AE以及至少一個其他歸類相同。否則它在AB之間或在Z之後。

Ç是又一個問題。對於所有排序規則,除utf8_turkish_ci之外,它等於C,在這種情況下,它是CD之間的一個字母。

Š = S許多排序規則;一些在ST之間。

底線:使用utf8_unicode_520_ci作爲列和連接;請輸入Æ作爲AE