Парсю xls файл библиотекой PHPExcel. Считываю русские строки. Мощнейшая библиотека, казалось бы, в ней то учтены все мелочи, включая вопросы с кодировкой. Однако нет. На их issue tracker-e с подобной проблемой сталкивались только косвенно, мне их решение не помогло. Опубликовал у них - ничего связного никто не ответил. Суть проблемы. Я получаю строку из файла, она приходит (выводится в браузере) неизменно вот в таком виде (в смысле, набор символов, конечно, от строки к строке меняется): Ïîëþñòðîâî-Ñïá или ÎÀÎ Óí-ì Ôðóíçåíñêèé или ÎÎÎ Øàðèíîâ mb_detect_encoding () возвращает, что строка в UTF-8. В head страницы <meta http-equiv="content-type" content="text/html; charset=utf-8" /> В базу данных записывается так же, collation стоит utf-8, все таблицы в utf-8, сама база в utf-8. Проверял и на локалке, и на хостинге. А теперь самое интересное. Если файл создан в системе (winXP), т.е. самим Microsoft Excel'ем, то парсится он великолепно. Однако задача такова, что файлы экспортируются из Access. И вот именно эти файлы я не могу нормально прочитать. Ещё одно наблюдение интересное: убрал из заголовка <meta http-equiv="content-type" content="text/html; charset=utf-8" /> и при извлечении полученную строку конвертирую вот так: echo iconv ("UTF-8", "ISO-8859-1", $str); получаю нормальный русский язык добавляю в заголовок <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> снова получаю нормальные русские символы убрал из заголовка мета тег и сделал следующиее echo iconv ("ISO-8859-1", "UTF-8", iconv ("UTF-8", "ISO-8859-1", $str)); снова получил кривой код, добавление мета тега с charset=utf-8 не помогает Найдётся кто то компетентный в вопросах кодировок, кто сможет проанализировать предоставленный мной наблюдаемый эффект и помочь разобраться в проблеме ? Сам я не настолько компетентен, что бы разобраться в чём тут дело... к сожалению. Есть идеи ?
вещь хорошая, но сказать однозначно что бровзером все что вы выведете будет воспринято как юникод нельзя. Зависит от настроек апача (или пхп. Сейчас не вспомню). По этому, отправляем перед выводом нужный header. Остальное. С кодировками все просто. Текст, как таковой не имеет кодировки. Это (как 100 раз уже говорилось) набор данных. Программа, которая отображает его должна определить (либо вы за нее) в какой кодировке отобразить. Теперь, сверху смотрим на всю проблему. А она у нас совсем маленькая. Надо понять в какой кодировке информация, высыпаемая, в вашем случае, акцессом. В какой кодировке у вас работает браузер можно спокойно посмотреть через "вид". Экспорт, я предполагаю - 1258, т.к. виндовс.
Насчёт header'а - пробовал раньше, не помогало. Да, с кодировками всё, казалось бы, просто. Но не зря ведь возникает столько проблем, связанных с ними) Насчёт кодировки: теоретически - все данные в xls файлах хранятся в utf-8, практически же у меня не получалось конвертнуть ни в какую другую кодировку эти данные, пытался даже обрезать первые 3 байта (BOM) - не в том было дело. По сабжу: сменил библиотеку, и после некоторых манипуляций с iconv() заставил работать как требуется. Трясусь от страха и боюсь шевельнуть пальцем что бы не вернуть старые проблемы.