2013-11-21 8 views
0

PHP кусок кода, как это:UTF8 кодирование со специальными символами иностранных

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

возвращает ложь, если, например: $res->translation = "Bottines À Talons Hauts" и $ph = "bottines à talons hauts". Проблема должна быть в странном письме À, так как другие слова прекрасно сочетаются.

Следует отметить, что $res->translation исходит из MySQL и $ph - это фраза из textarea на странице HTML.

Любые идеи?

+0

, что вы хотите сделать? В чем дело? –

ответ

1

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

Возвращает строку со всеми алфавитных символов преобразуются в нижний регистр.

Обратите внимание, что «алфавитный» определяется текущей локалью. Это означает, что, например, по умолчанию «C», символы, такие как umlaut-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, хотя

Смежные вопросы