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

у меня есть некоторый текст на иностранном языке на моей странице, но когда я делаю это нижним регистром, это начинает быть похожим на это...


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

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

28
задан Theodore R. Smith 11 October 2013 в 20:37
поделиться

7 ответов

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

58
ответ дан 28 November 2019 в 02:21
поделиться

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

mb_internal_encoding('UTF-8');

...

$b = mb_strtolower($a);
echo $b;
19
ответ дан 28 November 2019 в 02:21
поделиться

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

2
ответ дан 28 November 2019 в 02:21
поделиться

Вам нужно будет установить языковой стандарт; см. первый пример на http://ca3.php.net/manual/en/function.strtolower.php

0
ответ дан 28 November 2019 в 02:21
поделиться

Пробовали ли вы

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

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

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

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

$str = mb_strtolower($str, mb_detect_encoding($str));
5
ответ дан 28 November 2019 в 02:21
поделиться

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

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

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

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

3
ответ дан 28 November 2019 в 02:21
поделиться

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

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

1
ответ дан 28 November 2019 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: