Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: file_get_contents i kodowanie
Forum PHP.pl > Forum > Przedszkole
czerpakzmiedzi
Wiem że było sporo o kodowaniu ale nigdzie nie znalazłem rozwiązania. Pobieram treść strony a zamiast polskich znaków widzę krzaczki. Nie pomaga ustawienie kodowania strony nie pomaga to http://www.elider.pl/?nr=329, nie pomaga też htmlentites etc. Co jeszcze mogę zrobić?
jmail
http://pl.php.net/manual/en/book.iconv.php
czerpakzmiedzi
Dzięki za odpowiedź. Niestety już to próbowałem.

Przy
Kod
iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text)

wypisuje słowa w bardzo dziwny sposób. Niektóre znaki są ok a inne nie . Np. ć wyświetla się jako 'c (ogonek jest jakby oddzielnym znakiem)

a przy
Kod
iconv("UTF-8", "ISO-8859-1//IGNORE", $text)

po prostu wyrzuca wyrazy bez znaków np. aśdćdć jako add
jmail
a jak Ty chcesz polskie znaki w kodowaniu ISO-8859-1 wyświetlić oO przecież to jest kodowanie lacińskie bez znaków - znaczy angielski oO

spróbuj tak

  1.  
  2. //rozpoznajemy jakie kodowanie ma wprowadzony string
  3. $enc_in = mb_detect_encoding($string_wejsciowy,"UTF-8, ISO-8859-2, ISO-8859-1");
  4. //sprawdzamy czy da się przekonwertować na UTF-8
  5. $enc = iconv($enc_in,"UTF-8",$string_wejsciowy);
  6. //i jeżeli da się to mamy
  7. if($enc!=false)$string_wejsciowy=$enc;
  8.  
czerpakzmiedzi
Dzięki, pomogło, ale teraz mam problem z zapisem tego do bazy. Po przeczytaniu artykułu na wortalu zrobiłem tak: podczas podłączania do mysql wysyłam "SET NAMES 'latin2'", tabela jest latin2, latin_general_ci, a mimo to zamiast polkich znaków mam krzaczki.

Pobieram file_get_contents i wyświetlam na stronie: OK
Zapisuję do bazy: W bazie zapisuje się źle
Pobieram z bazy: Wyświetla się źle
jmail
zamień latin2 na utf-8 będzie działało
czerpakzmiedzi
Zmieniłem tabele na UTF-8, UTF_polish_ci, do tego wysyłam przy każdym połączeniu UTF-8 i zmieniłem w META kodowanie na UTF-8. I wsyzstko byłoby ok gdyby nie to że cały tekst na mojej stronie, który nie pochodzi z bazy tylko jest statyczny zamienił się w krzaczki. Ten z bazy wyświetla się poprawnie tak jak mówiłeś.

Czy da się to zrobić tak żeby nie zmieniać kodowania w meta i jednocześnie wyswietlać poprawnie text z bazy?

Myślałem o konwersji z UTF8 do ISO-8859-2 wszystkiego co zapisuje się do bazy. Czy to dobry pomysł?
jmail
jakiego edytora plików używasz?
czerpakzmiedzi
NetBeans mogę tam wpisać dowolne kodowanie. Aktualnie mam to ISO-8859-2
jmail
rewelacja. użyj kodowanie UTF-8 dla wszystkich plików i je przekonwertuj do tego kodowania. Najlepszy z możliwych sposobów. Wszystkie pliki muszą się zmienić w UTF-8 wtedy problem ze statycznycm tekstem zniknie
czerpakzmiedzi
Kurcze ze statycznym znikł. Ale teraz spróbowałem inną stronę do bazy załadować, która ma ISO-8859-2 no i nie idzie ;/
jmail
cały projekt przekonwertuj na UTF-8 pisałem wcześniej. unikniesz problemów. I nie używaj innego kodowania - nie jest Ci potrzebne
czerpakzmiedzi
Przekonwertowałem cały projekt do UTF-8 i wszystko wyświetla sie poprawnie. Ale teraz chciałbym pobrać kolejną stronę za pomocą file_get_contents(). Niestety ów strona ma kodowanie ISO-8859-2.
jmail
no to znowu wykorzystaj to - teraz zawartość strony przekonwertuj smile.gif

  1.  
  2.  
  3. //rozpoznajemy jakie kodowanie ma wprowadzony string
  4. $enc_in = mb_detect_encoding($zawartosc_strony,"UTF-8, ISO-8859-2, ISO-8859-1");
  5. //sprawdzamy czy da się przekonwertować na UTF-8
  6. $enc = iconv($enc_in,"UTF-8",$zawartosc_strony);
  7. //i jeżeli da się to mamy
  8. if($enc!=false)$string_wejsciowy=$enc;
  9.  
  10.  
  11.  
  12.  
czerpakzmiedzi
Jesteś Wielki stary. Dzięki że wytrwałeś winksmiley.jpg Daje Ci pomógł za każdy post.
jmail
jak coś jeszcze będziesz miał to wal jak w dym smile.gif
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.