utf8_encode не дает правильного результата - PullRequest
1 голос
/ 11 февраля 2012

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

Я храню массив, в котором есть такие ключи, как «е», «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 ]

1 голос
/ 12 февраля 2012

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

Я сделал следующее: Сначала я собрал все решения, добавив следующую строку:

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"); достаточно. Так что теперь это работает. Спасибо за все предложения!

0 голосов
/ 12 февраля 2012

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

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

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

0 голосов
/ 11 февраля 2012

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

mb_internal_encoding ("UTF-8");

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...