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
заголовок.