Как поменять кодировку с iso-8859-1 на windows-1251?
Ситуация такая: я получаю запрос, который пользователь вводит в строку поиска и применяю функцию preg_split. После чего кодировка слов меняется и судя по функции mb_detect_encoding на iso-8859-1. Можно ли как то изменить кодировку на windows-1251?
Пробовала iconv не работает
Читала еще, что mb_detect_encoding может неправильно определить кодировку, тогда как можно определить правильно?
Выдает такой символ �, прочитала, что это UTF-8, но при применении iconv строка становится пустой
Кодировка зависит не от пользователя, а от вас.
Информации мало. Но судя по всему у вас данные приходят в кодировке utf-8, в preg_split вы забыли модификатор /u (unicode)
В кодировке iso-8859-1 не может быть кириллических символов, поэтому перекодировать из нее в windows-1251 не возможно. Приведите где-нибудь пример того, что вы видите.
Например, начинаю вводить в поиск слово 'ручка'.
1. Вывожу само слово, все корректно 'ручка'
2. Применяю preg_split("/[^a-zA-Zа-яА-Я0-9]+/i", $str, -1, PREG_SPLIT_NO_EMPTY); и вывожу первый элемент массива. Выводится �
3. Использую функцию mb_internal_encoding и вывожу результат, выдает iso-8859-1
Сам файл в кодировке windows-1251 и поэтому использовать в preg_split модификатор u, как писали выше, не могу - выйдет ошибка
А в итоге мне далее нужно слово в кодировке windows-1251
dankodima1, в вашем примере текст в кодировке Windows-1251, а не в iso-8859-1 и в перекодировке в Windows-1251 он не нуждается, но выводите вы его с перекодировкой из ISO-8859-1 в UTF-8 (в случае этой страницы). У автора вопроса текст скорей всего в кодировке UTF-16, она может быть BE или LE, по фрагменту это было бы понятно.