Автор Тема: Проблем с енкодинга при парсване на XLS таблица  (Прочетена 4785 пъти)

Constantinff

  • Напреднали
  • *****
  • Публикации: 98
  • Distribution: Убунту Кармик
  • Window Manager: Гном
    • Профил
Ползвам този скрипт:
http://code.google.com/p/php-excel-reader/
за parse на xls файла:
http://ns.naval-acad.bg/infocenter/razpisa.../sed%2016-1.xls
И скрипта си работи , НО енкодинга се омазва
В скрипта има един ред:

Код:
    var $_defaultEncoding = "UTF8";

Който го сменям , но все се появяват маймуни , и то най-различни
Ако може малко поможе ще съм много благодарен.
ПС. Ако имате някакви други идеи за превеждане на по-горната екселска таблица във вид удобен за работа с PHP също ще помогнете много

Благодаря!
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
какъв е резултата ако ползваш UTF-16 или CP-1251
Активен

0x2B|~0x2B

Constantinff

  • Напреднали
  • *****
  • Публикации: 98
  • Distribution: Убунту Кармик
  • Window Manager: Гном
    • Профил
UTF-16
Код:
ÿþ!& �N�o� �8�

CP1251
Код:
ÑÅÄÌÈÖÀ No 8

CP-1251
Код:
[i]Не извежда текст[/i]
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
UTF-16
Код:
ÿþ!& �N�o� �8�

CP1251
Код:
ÑÅÄÌÈÖÀ No 8

CP-1251
Код:
[i]Не извежда текст[/i]
CP-1251 - промени шрифта
Активен

0x2B|~0x2B

Constantinff

  • Напреднали
  • *****
  • Публикации: 98
  • Distribution: Убунту Кармик
  • Window Manager: Гном
    • Профил
Когато е CP-1251 никакъв текст не излиза
Ако махна тирето излизат маймуни!
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Когато е CP-1251 никакъв текст не излиза
Ако махна тирето излизат маймуни!
Шрифта
Активен

0x2B|~0x2B

dvasilev

  • Напреднали
  • *****
  • Публикации: 200
  • Distribution: Kubuntu, Debian
  • Window Manager: KDE
    • Профил
    • WWW
@romeo_ninov: Подходът "С правилния шрифт нямам нужда от енкодинг" едва ли е най-удачен.

@Constantinff: Макар и да нямам опит в парсването на xls файлове мисля, че имаш несъгласуваност с encoding-ите на страницата, която продуцираш, и резултата от въпросния скрипт. Така или иначе в xls файловете текстът се пази в unicode, така че този параметър би трябвало да указва в каква кодова таблица да се генерира html-то. Пробвай от browse-ра ръчно да смениш encoding-а на страницата на този, който си дал на скрипта и кажи какъв е резултата.
Активен

Constantinff

  • Напреднали
  • *****
  • Публикации: 98
  • Distribution: Убунту Кармик
  • Window Manager: Гном
    • Профил
Към момента съм пробвал всичките комбинации.
Като дам на скрипта да чете таблицата с UTF-8 излизат маймуните за който сайта: http://2cyr.com/decode/ казва че трябва да е windows-1251
Иначе от браузъра и мета таговете нищо не се получи, все маймуни и все казва че трябва да го сложа на windows-1251
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
@romeo_ninov: Подходът "С правилния шрифт нямам нужда от енкодинг" едва ли е най-удачен.

няма проблем с енкодинга, има неподходящ шрифт!!!
на сайта посочен в предишния пост при сорс ендкодинг 1251 и показано като 8859-1 показва че текста ÑÅÄÌÈÖÀ No 8 е СЕДМИЦА No 8
Активен

0x2B|~0x2B

Constantinff

  • Напреднали
  • *****
  • Публикации: 98
  • Distribution: Убунту Кармик
  • Window Manager: Гном
    • Профил
Ето тука е скрипта:
http://students-council.collegeofmarinestudies.com/kocb0/xls/example.php
и реда за енкодинга е
Код:
$data = new Spreadsheet_Excel_Reader("example.xls",false,CP1251);
От браузъра сменям Character Encoding, и нито един не показва СЕДМИЦА No 8
Активен

dvasilev

  • Напреднали
  • *****
  • Публикации: 200
  • Distribution: Kubuntu, Debian
  • Window Manager: KDE
    • Профил
    • WWW
@Constantinff: Има грешка в скрипта. Намираш
Код:
$val = htmlentities($val);
и го заменяш с
Код:
$val = htmlentities($val, ENT_COMPAT, $this->_defaultEncoding);
Ако прочетеш какво прави функцията, ще разбереш какво се е оплескало. Също така искам да те помоля да ми направиш една услуга - изпрати тази корекция на човека, който поддържа проекта.
Активен

Constantinff

  • Напреднали
  • *****
  • Публикации: 98
  • Distribution: Убунту Кармик
  • Window Manager: Гном
    • Профил
LOL
Перфектно!
Мерси
И ок, ще им пиша
Активен

Constantinff

  • Напреднали
  • *****
  • Публикации: 98
  • Distribution: Убунту Кармик
  • Window Manager: Гном
    • Профил
Още нещо.
Понеже текста от цялата таблица влиза в MySQL база данни ,
при collation на базата latin1_swedish_ci текста в нея се вижда като : ÑÅÄÌÈÖÀ No 8
и дори да я сменя на utf8 текста подължава да не се чете
Предполагам че когато се извежда текста от таблицата на html страницата няма да има проблеми, но ако трябва да се търси в таблицата ?
Активен

dvasilev

  • Напреднали
  • *****
  • Публикации: 200
  • Distribution: Kubuntu, Debian
  • Window Manager: KDE
    • Профил
    • WWW
@Constantinff: Принципно проблемът може да се дължи на две неща. Първото е да character set -а на базата да не поддържа букви на кирилица. Другото е да не си задал правилна кодировка на връзката между php-скрипта и mysql сървъра.

Първото лесно се проверява като се закачиш на mysql сървъра от конзола и въвеждаш данни. За второто, гледай кодировката да е тази, която използваш за парсване на xls файла.
Активен