我知道答案很簡單,但我要去香蕉。我想我已經嘗試了所有可用的解決方案。在這裏,我們去...MySQL的字符集和拼字:不區分變音不起作用
我有一個字符集LATIN1的數據庫。是的,我應該在utf8,但我有幾個正在運行的項目,所以我不想惹他們。
問題帶有SELECT
與LIKE "%...%"
表是UTF8與COLLATE utf8_general_ci。這些字段也是使用utf8_general_ci歸類的utf8。我的腳本文件(php)是utf-8編碼的,服務器也以utf-8格式提供文件。所以,一切都是utf-8。
好吧,因爲所有內容都與utf8_general_ci整理,所以我應該能夠搜索不區分大小寫和重音漸變。例如:
具有表providers
...
id providerName
1 Jose
2 José
我應該能夠做到......
SELECT * FROM providers WHERE providerName LIKE "%jose%"
或
SELECT * FROM providers WHERE providerName LIKE "%josé%"
而且有,在這兩個情況下,兩行返回。但是,在第一個查詢中,我只得到第1行;和第二個查詢,我只得到第二行。不區分大小寫的搜索似乎工作正常,但不區分重音不會。
所以我試着在LIKE "%...%"
之後加了COLLATE utf8_general_ci
。同樣的結果。
然後,我發現連接是在latin1中進行的(通過PHP函數mysql_client_encoding()
)。所以每次建立連接時都添加一個查詢,指示使用utf8。我使用了SET NAMES UTF8 COLLATE utf8_general_ci
和php的mysql_set_charset()
。當我添加此配置時,第一個查詢返回第1行,但第二個查詢不返回任何結果。另外,所有的結果都會返回罕見的字符(你知道,就像ð一樣,即使全部設置爲utf8)。
這是我的插件。所有內容都以UTF8格式設置,但不能像我所期望的那樣工作。
MySQL Server 5.0.95
PHP 5.2.14
Win7
看看這個:http:// stackoverflow。com/questions/12242493/php-pdo-database-error-special-characters – 2012-09-11 03:03:25
最後一部分聽起來像是你實際上在數據庫中存儲了錯誤編碼的垃圾。請參閱[在Web應用程序中處理Unicode前後](http://kunststube.net/frontback/)。 – deceze