Моя проблема заключается в следующем:
Я храню массив, который имеет такие ключи, как «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 символов: не удалось; Ошибка utf8_encode; [пытался с обоими] iconv_set_encoding: failed; ini_set не удалось; Ошибка mb_internal_encoding. Все вернулись либо с помощью Ã, либо .
Я собрал несколько решений и, наконец, это работает.
Я сделал следующее: во-первых, я собрал все решения с добавлением этой строки:
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
.