Подтвердить что ты не робот

Проблемы с функцией strtolower

У меня есть текст на иностранном языке на моей странице, но когда я делаю его строчным, он начинает выглядеть так...


$a = "Երկիր Ավելացնել";
echo $b = strtolower($a);
//returns  ����� ���������

Я установил <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> не могли бы вы сказать мне, почему? заранее спасибо

4b9b3361

Ответ 1

попробуйте использовать mb_strtolower()?

Ответ 2

PHP5 не совместим с UTF-8, поэтому вам все равно нужно использовать расширение mb. Я предлагаю вам установить внутреннюю кодировку mb на utf-8, а затем вы можете свободно использовать ее функции, не указав все кодировки:

mb_internal_encoding('UTF-8');

...

$b = mb_strtolower($a);
echo $b;

Ответ 3

Я нашел это решение из здесь

$string = 'Թ';
echo 'Uppercase: '.mb_convert_case($string, MB_CASE_UPPER, "UTF-8").'';
echo 'Lowercase: '.mb_convert_case($string, MB_CASE_LOWER, "UTF-8").'';
echo 'Original: '.$string.'';

работает для меня (в нижнем регистре)

Ответ 4

Вы пробовали

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

mb_strtolower() и указать кодировку как второй параметр?

Примеры на этой странице работают.

Вы также можете попробовать:

$str = mb_strtolower($str, mb_detect_encoding($str));

Ответ 5

Php по умолчанию не знает об utf-8. Он предполагает, что любая строка ASCII, поэтому strtolower преобразует байты, содержащие коды прописных букв A-Z, в коды нижнего регистра a-z. Поскольку буквы не-ascii-UTF-8 написаны с двумя или более байтами, strtolower преобразует каждый байт отдельно, а если байт содержит код, равный буквам A-Z, он преобразуется. В результате последовательность прерывается, и она больше не соответствует правильному символу.

Чтобы изменить это, вам нужно настроить расширение mbstring:

http://www.php.net/manual/en/book.mbstring.php

чтобы заменить strtolower на mb_strtolower или использовать mb_strtolower direclty. В любом случае вам нужно потратить некоторое время, чтобы настроить параметры mbstring в соответствии с вашими требованиями.

Ответ 6

Используйте mb_strtolower, поскольку strtolower не работает с многобайтовыми символами.

Ответ 7

strtolower() будет выполнять преобразование только в текущей выбранной локали.

Я бы попробовал mb_convert_case(). Убедитесь, что вы явно указываете кодировку.