2013-11-21 271 views
0

PHP的代碼是這樣的:UTF8編碼的特殊外國字符

trim(strtolower(utf8_encode($res->translation))) == trim(strtolower(utf8_encode($ph))) 

返回false如果,例如:$res->translation = "Bottines À Talons Hauts"$ph = "bottines à talons hauts"。問題應該在一個奇怪的À字母,因爲其他字完美匹配。

需要說明的是$res->translation來自MySQL,$ph是HTML頁面中textarea的一個短語。

任何想法?

+0

你想做什麼?你有什麼問題? –

回答

1

http://www.php.net/manual/en/function.strtolower.php

返回字符串中的所有字母轉換爲小寫。

請注意,「字母」由當前語言環境決定。這意味着即使在默認的「C」語言環境中,諸如變音符A(Ä)之類的字符也不會被轉換。

這應該使用mb_strtolower和強制來解決UTF-8

trim(mb_strtolower(utf8_encode($res->translation),'UTF-8')) == trim(mb_strtolower(utf8_encode($ph),'UTF-8')) 
+0

這正是我正在尋找的。儘管'trim(mb_strtolower($ res-> translation,'UTF-8'))== trim(mb_strtolower($ ph,'UTF-8'))''只有少許改變。不再需要utf8_encode函數。 –

0

可能是您的數據庫連接需要使用utf8編碼來建立。

嘗試建立你的連接時,以下幾點:

$link = mysql_connect('localhost', 'user', 'password'); 
mysql_set_charset('utf8',$link); 

注:最好使用庫MySQLi或PDO,雖然