utf8_encode не дает правильного результата

Моя проблема заключается в следующем:

Я храню массив, в котором есть такие ключи, как "e", "f" и т. Д. В какой-то момент мне нужно получить значение ключа. Это хорошо работает. Но если я хочу сохранить "í", "é" и т. Д. В качестве ключей, это не даст правильного результата (приводит к). Моя страница должна быть в UTF-8. Посмотрев проблему, я обнаружил, что utf8_encode должен помочь моей проблеме. Это не так: несмотря на то, что это произвело более читаемый характер, оно все равно полностью отличалось от того, что я хочу. Если важно, phpinfo выдает:

Directive   Local Value Master Value
iconv.input_encoding    ISO-8859-1  ISO-8859-1
iconv.internal_encoding ISO-8859-1  ISO-8859-1
iconv.output_encoding   ISO-8859-1  ISO-8859-1

Что может помочь в решении проблемы?

Редактировать: Я думаю, что ключи массива делают некоторую потерю данных. Это правда? Если да, как это предотвратить?

Edit2: решения, которые я пробовал до сих пор: получить значение ключа массива - не удалось; создать массив с теми же ключами, но со значениями символов utf-8: fail; utf8_encode не удалось; [пробовал с обоими] iconv_set_encoding: не удалось; сбой ini_set; Ошибка mb_internal_encoding. Все вернулись либо с М, либо с.

3 ответа

Решение

Я собрал несколько решений, и, наконец, это работает.

Я сделал следующее: во-первых, я собрал все решения, добавив эту строку:

ini_set('default_charset', 'UTF-8');
iconv_set_encoding("input_encoding", "UTF-8");
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "UTF-8");
mb_internal_encoding("UTF-8");

Это не сработало.

Я просмотрел все ссылки, метод utf8_encode - utf8_decode не работал. Затем я взглянул на функции, нашел mbstring, поэтому я заменил каждую строковую функцию ее эквивалентом mbstring.

Это работало нормально. Затем я понял, что mb_internal_encoding("UTF-8"); достаточно. Так что теперь это работает. Спасибо за все предложения!

Попробуйте добавить эту строку вверху всех скриптов, которые будут иметь дело с данными UTF-8:

mb_internal_encoding ("UTF-8");

или, что еще лучше, отредактируйте внутреннюю кодировку в файле php.ini.

Попробуйте установить директиву default_charset:

ini_set('default_charset', 'UTF-8');

Это устанавливает кодировку символов, которая отправляется в браузер в Content-Type заголовок.

Другие вопросы по тегам