Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie polskich znaków PHP
Forum PHP.pl > Forum > PHP
david8213
mam funkcję która wyświetla mi krzaki zamiast polskich znaków

zamieniałem już UTF-16LE na iso-8859-2, utf-8, cp1250 ale bez skutu - Ciągle krzaki

proszę o pomoc

Kod
    function _encodeUTF16($string) {
        $result = $string;
        if ($this->_defaultEncoding){
            switch ($this->_encoderFunction){
                case 'iconv' :     $result = iconv('UTF-16LE', $this->_defaultEncoding, $string);
                                break;
                case 'mb_convert_encoding' :     $result = mb_convert_encoding($string, $this->_defaultEncoding, 'UTF-16LE' );
                                break;
            }
        }
        return $result;
    }
lucaa44
mam podobny problem....

moze ktos mnie utwierdzi w przekonaniu: gdy na danej stronie mam kodowanie ustawione w znaczniku html /meta/ na iso-8859-2 to string zaladowany z pliku zewn(przez ta strone) zakodowany w utf-8 zostanie na pewno, bez wyjatku wyswietlony na tej stronie z 'krzakami'... i tutaj rozwiazaniem moze byc ustawienie /meta/ na utf-8, lub konwersja przez funkcje mb zaladowanego stringu do tego samego kodowania co jest w meta czyli iso-8859-2..dobrze mysle?
mls
Cytat(david8213 @ 14.02.2012, 16:34:34 ) *
mam funkcję która wyświetla mi krzaki zamiast polskich znaków

zamieniałem już UTF-16LE na iso-8859-2, utf-8, cp1250 ale bez skutu - Ciągle krzaki


Szukasz nie tam gdzie trzeba wink.gif Zakładam, że chodzi o klasę php-excel-reader.
Jeśli tak, zmień linię bodajże 1120 z
  1. $retstr = ($asciiEncoding) ? $retstr : $this->_encodeUTF16($retstr);

na
  1. $retstr = ($asciiEncoding) ? $this->_encodeStandard($retstr) : $this->_encodeUTF16($retstr);

oraz dopisz do klasy funkcję
  1. function _encodeStandard($string) {
  2. $result = $string;
  3. if ($this->_defaultEncoding) {
  4. switch ($this->_encoderFunction) {
  5. case 'iconv':
  6. $result = iconv('cp1250', $this->_defaultEncoding, $string);
  7. break;
  8. case 'mb_convert_encoding':
  9. $result = mb_convert_encoding($string, $this->_defaultEncoding, 'cp1250');
  10. break;
  11. }
  12. }
  13. return $result;
  14. }


Dla polskich arkuszy zadziała idealnie.

EDIT
Dopiero zauważyłem, że odpowiedziałem na posta sprzed paru miesięcy. No cóż, może komuś się to przyda tak czy owak wink.gif
modern-web
Powiedzcie mi... dlaczego iso-8859-2? Czy jeszcze nie wiecie, że standardem jest utf-8?

Co do Waszego problemu, kodowanie strony to jedno, jeśli dane znajdują się w bazie danych - najlepiej by miały ten sam prefix (utf-8/16/32 itp...), wyświetlając dane które w bazie zapisane są w utf-8 na stronie o kodowaniu iso-8859-2 musicie zastosować iconv. Program w którym tworzycie kod również ma znaczenie - upewnijcie się, że nie jest to notatnik i nie zapisujecie plików w ASCII wink.gif

Czego jeszcze nie wiecie?

p.s.
to jest odpowiedź dla lucaa44 smile.gif
lucaa44
witam, z gory dzieki za podpowiedz :] (niektore moje posty na tym forum wogole nie doczekaly sie odpowiedzi:>)

dlaczego iso-8859-2? nie wiem moze przyzwyczajenie, moze troche zacofanie, nie bez znaczenia byly tez problemy z edytorem ktory nie radzil sobie z zapisem w utf-8...poza tym dobry powod zeby przetestowac funkcje konwertujace takie jak iconv, jak dotad nie mialem zadnych problemow z ogonkami chociazby w bazach danych, do teraz..wyskoczyl problem z plikami

apropo Twojego rozwiazania:

- nie chodzi o dane z bazy danych, ale z pliku zewn

Cytat
wyświetlając dane które w bazie zapisane są w utf-8 na stronie o kodowaniu iso-8859-2 musicie zastosować iconv


ok, wyswietlam na stronie o kodowaniu iso-8859-2 dane z pliku ktore sa zapisane w nim w utf-8, stosuje funkcje iconv() i mb_*() i nic to nie daje -> krzaki

Cytat
Program w którym tworzycie kod również ma znaczenie - upewnijcie się, że nie jest to notatnik i nie zapisujecie plików w ASCII


uzywam pspad'a , plik skryptu ktory pobiera dane z pliku zewn i je wyswietla jest zapisany w iso-8859-2 (zreszta edytor jest nastawiony tak by wszystkie pliki zapisywal w iso-8859-2) i nadal -> krzaki

troche bardziej szczegolowo(moze nie idealnie) problem opisalem tu: problem z konwersja utf-8 do iso-8859-2

moze ktos wie co z tym zrobic?

Pozdrawiam
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-2025 Invision Power Services, Inc.