Как заставить PHP принимать символы ISO-8859-1 в целом? - PullRequest
1 голос
/ 18 апреля 2011

Это давало мне покоя целую вечность, и я хочу разобраться с этим раз и навсегда. У меня есть ассоциативный массив, поля которого я определил, используя символы ISO-8859-1. Например:

array("utført" => "red");

У меня также есть другой массив, который я загрузил из файла. Я распечатал этот массив в браузере, убедившись, что такие значения, как Æ, Ø и Å, не повреждены. Я пытаюсь сравнить два поля из этих массивов, и я получаю сообщение:

Неопределенный индекс: utfã¸rt в строке 39

Я не могу сдержать рыдания. Каждый раз, когда я чертовски вовлекаю в сценарий любые буквы вне UTF-8, они в какой-то момент преобразуются в ã¸r или подобную ерунду.

Мой файл сценария закодирован в ISO-8859-1, документ, из которого я загружаю свои данные, такой же, как и таблица MySQL, в которую я пытаюсь сохранить данные.

Таким образом, единственный вывод, который я могу сделать, заключается в том, что PHP не принимает в код только какие-либо наборы символов, и мне нужно каким-то образом заставить PHP говорить по-норвежски.

Спасибо за любые предложения

Только к вашему сведению, я не приму никаких ответов в строках "Просто не используйте эти символы" или "Просто замените эти символы UTF-эквивалентами при загрузке файла" или любых других хакерских решений

1 Ответ

1 голос
/ 18 апреля 2011

Когда вы читаете ваши данные из внешнего файла, попробуйте преобразовать их в правильную кодировку.

Нечто подобное у меня на уме ...

  $f = file_get_contents('externaldata.txt');
  $f = mb_convert_encoding($f, 'iso-8859-1');
  // from this point deal with $f whatever you want

Кроме того, смотрите mb_convert_encoding () руководство для получения дополнительной информации.

...