Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> file_get_contents i kodowanie
czerpakzmiedzi
post 14.10.2009, 12:28:29
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 12:49:32
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


http://pl.php.net/manual/en/book.iconv.php
Go to the top of the page
+Quote Post
czerpakzmiedzi
post 14.10.2009, 13:40:09
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował czerpakzmiedzi 14.10.2009, 13:41:52
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 13:55:09
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post
czerpakzmiedzi
post 14.10.2009, 14:45:14
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 14:55:34
Post #6





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


zamień latin2 na utf-8 będzie działało
Go to the top of the page
+Quote Post
czerpakzmiedzi
post 14.10.2009, 15:07:54
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


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ł?
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 15:09:34
Post #8





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


jakiego edytora plików używasz?
Go to the top of the page
+Quote Post
czerpakzmiedzi
post 14.10.2009, 15:11:00
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


NetBeans mogę tam wpisać dowolne kodowanie. Aktualnie mam to ISO-8859-2
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 15:12:48
Post #10





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
czerpakzmiedzi
post 14.10.2009, 15:19:55
Post #11





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


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 ;/
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 15:26:00
Post #12





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


cały projekt przekonwertuj na UTF-8 pisałem wcześniej. unikniesz problemów. I nie używaj innego kodowania - nie jest Ci potrzebne
Go to the top of the page
+Quote Post
czerpakzmiedzi
post 14.10.2009, 15:28:46
Post #13





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 15:32:33
Post #14





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post
czerpakzmiedzi
post 14.10.2009, 15:38:32
Post #15





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.10.2009

Ostrzeżenie: (0%)
-----


Jesteś Wielki stary. Dzięki że wytrwałeś winksmiley.jpg Daje Ci pomógł za każdy post.
Go to the top of the page
+Quote Post
jmail
post 14.10.2009, 15:42:22
Post #16





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


jak coś jeszcze będziesz miał to wal jak w dym smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 00:41