Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHPExcelReader i problem z ogonkami
Forum PHP.pl > Forum > PHP
peters2004
Cześć.
Mam stronę pod Joomla 3.x, w swoim module musiałem czytać pliki excela, standardowo użyłem biblioteki PHPExcelReader.
Działało całkiem nieźle, ale np tekst "Trzebieszów" był konwertowany źle - przy czym wszystkie polskie ogonki OK - ważna była kombinacja "zó".
Teraz potrzebuję czytać czeskie znaki i kolejny błąd. Gdzieś czytałem, by zmienić w pliku PHPExcelReader linię:

  1. case 'iconv' : $result = iconv('UTF-16LE', $this->_defaultEncoding, $string);


na

  1. case 'iconv' : $result = iconv('UTF-16LE', 'iso-8859-2', $string);


Zaczęło działać OK, ale musiałem ręcznie przestawiać w przeglądarce kodowanie strony. Oczywiście reszta napisów była do luftu.
Dalej dodałem jeszcze linię:

  1. $result = iconv('iso-8859-2', 'UTF-8', $result);


Niestety znów źle. Ma ktoś jakiś pomysł ?

Pozdrawiam

jacobson
sprobuj dodac utf8_encode przy pierwszym stringu, też miałem podobny problem i obyło się bez jakichkolwiek iconv-ów
peters2004
A możesz nieco dokładniej?
Spróbowałem tak, ale jakieś chińskie znaczki widzę smile.gif

  1. $result = iconv('UTF-16LE', 'UTF-8', utf8_encode ($string));
jacobson
jezeli sprawdzisz i plik ktory wgrywasz masz w utf-8 ale wciaz widzisz dziwne znaczki to odkoduj go przez utf8_encode bez iconva i powinno byc ok, u mnie przynajmniej bylo smile.gif
peters2004
Sprawdziłem i plik xls, zapisany za pomocą OO jest w UTF16

Problem rozwiązany.
Faktycznie, problem był w tym, że niektóre komórki były w UTF16 a inne e windows-1250.
Błąd był zupełnie w innym miejscu. Nie dekodowano komórek w windows-1250, stąd też ten pierwszy błąd.

Dla zainteresowanych:
zamiast
  1. $retstr = ($asciiEncoding) ? $retstr : $this->_encodeUTF16($retstr); $retstr.

wstawić:
  1. if($asciiEncoding) $retstr=iconv('WINDOWS-1250', 'UTF-8', $retstr); else $retstr=$this->_encodeUTF16($retstr);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.