![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 7 Dołączył: 19.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie: jak dobrać się do pliku rss który publikuje interia?
plik: http://kanaly.rss.interia.pl/turystyka.xml problem: kodowanie pliku to UTF-8, ale znalazły się w nim słowackie znaki które w UTF już niestety nie są. Do tej pory używałem:
Co dało błędy:
Więc spróbowałem:
No i błąd:
Błąd ominąłem w simplexml_load_string:
i otrzymałem
Czy ktoś ma większe doświadczenie w kodowaniach? Zależy mi na tym aby tekst był czytelny, słowackie znaki mogą być wykrzaczone. Wszelka pomoc mile widziana. Ten post edytował taktu 26.12.2009, 19:30:21 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 5 Dołączył: 24.08.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj konwertować polskie znaczki według ich zapisu szesnastkowego:
Jakby któryś znak zamieniało na nie ten, to zobacz na tablicę http://eazu.pl/index.php/zamiana-polskich-...e-odpowiedniki/ , bo to z niej utworzyłem tę. Ten post edytował byqu 26.12.2009, 20:15:28 -------------------- Pozdrawiam,
Łukasz "Rutek" Rutkowski Eazu.pl, WebDay.pl |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 7 Dołączył: 19.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ciekawy pomysł ale niestety nie pomoże, znaki które wysypują plik są czesko/słowackie np. "Skoru?ina", "Skoru?inske vrchy", "?trbské Pleso". Poza tym jest to kanał turystyka więc równie dobrze autorzy mogą wkleić nazwy niemieckie, arabskie czy jakiekolwiek inne.
W internetowych czytnikach zauważyłem 2 podejścia: - odczytanie całego pliku i wyświetlenie informacji w taki sposób, w jaki widać po odpaleniu pliku xml w przeglądarce, - odczytywanie pliku po kawałku, wysypuje się kiedy ma odczytać informację z błędnym kodowaniem, Zaczynam dochodzić do wniosku że jedynym sposobem jest napisanie własnej klasy do obsługi xml, alby to w końcu zadziałało. Choć tak naprawdę, to powinien być problem interii żeby trzymała się standardów. edit: Znalazłem klasę która odczytuje plik kawałkami, wysypuje się gdy trafi na nieodpowiednie kodowanie, ale to i tak lepsze niż nic ![]() http://articles.sitepoint.com/article/php-...parsing-rss-1-0 Ten post edytował taktu 27.12.2009, 13:46:14 -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
skoro wiesz jakie to kodowanie ma być to pozostaje Ci tylko je wymusić - możesz to zrobić na 2 sposoby, krótkim kodem a mało wydajnym który odradzam tylko wskazuję drogę do przemyśleń:
lub idea taka sama aczkolwiek kod dłuższy i w sumie pozostawi się encje dla innych znaków - w niczym w końcu to nie przeszkadza:
jednak jeszcze zamiast funkcji file_get_contents radziłbym używać curl'a z włączoną opcją gzip coby mniej na łączu było transferu lub fsockopen - tyle, że tutaj trzeba sprawdzać jeszcze nagłówki przychodzące i jeśli jest skompresowane gzip'em to samemu dekompresować... -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 7 Dołączył: 19.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedź, rzeczywiście zadziałało tak jak trzeba.
Dodam tylko na koniec że nie warto podpowiadać funkcji mb_detect_encoding() jakich kodowań ma szukać. Okazało się że z podpowiedziami źle wykrywała kodowanie..
i działa równie dobrze. Ten post edytował taktu 27.12.2009, 17:51:29 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:45 |