[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите рашить проблему с кодировкой (чтение xls)
Malgin
Парсю 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. И вот именно эти файлы я не могу нормально прочитать.

Есть идеи ?



Спустя 54 минуты, 32 секунды (6.08.2010 - 18:14) Lenarfate написал(а):
в корне лежит файл .htaccess со строкой AddDefaultCharset UTF-8?

Спустя 10 дней, 31 минута, 29 секунд (16.08.2010 - 18:45) Malgin написал(а):
я так подозреваю, что будь проблема в этом - все файлы с русским языком парсились бы не верно. Но тут исключительно файлы из access парсятся не правильно...
на всякий случай попробовал - положил в корень файл .htaccess со строкой AddDefaultCharset UTF-8

Спустя 1 час, 34 минуты, 31 секунда (16.08.2010 - 20:20) Malgin написал(а):
Ещё одно наблюдение интересное:
убрал из заголовка
<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 не помогает

Найдётся кто то компетентный в вопросах кодировок, кто сможет проанализировать предоставленный мной наблюдаемый эффект и помочь разобраться в проблеме ?
Сам я не настолько компетентен, что бы разобраться в чём тут дело... к сожалению.

Спустя 1 день, 14 минут, 43 секунды (17.08.2010 - 20:34) Malgin написал(а):
Сменил библиотеку, и после некоторых манипуляций с iconv() заставил работать как требуется. Трясусь от страха и боюсь шевельнуть пальцем что бы не вернуть старые проблемы.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.