[PHP] Polskie znaki w URL

0

Witam, mam problem ;)
Wchodzac np. na strone http://pl.wikipedia.org/wiki/Śledź, moj Firefox przeksztalca polskie znaki na system poprzedzony znakiem procenta. Ok, lecz system wikipedii ucina mi polskie znaki i powyzszy URL traktowany jest jako http://pl.wikipedia.org/wiki/led ;)

Na IE jest wszystko ok. Pytanie teraz jak to przeksztalcic programowo w skrypcie PHP. Probowalem urldecode a nastepnie iconv. Nie pomaga :/ Radzi sobie ze znakami ć ż ale już np. z literą "ś" - nie bardzo :/ Jak prawidlowo obslugiwac takie wywolania?

0

bo akurat ć i ż sa zapisywane identycznie zarowno w ISO 8859-2 jak i kodowaniu wingrozy litery ąś,ź oraz Ą,Ś,Ź tylko sie roznia, wniosek iconv z jakiego kodowania na jakie zmieniasz?

Podejrzewam ze tam tkwi problem

0

Dziwne. Także używam FF i u mnie normalnie wchodzi :/ Może to być ew. kwestia systemu operacyjnego.

//U mnie na FF też chce pisać artykuł o 'led' - M

0

Maker: chce zmienic na UTF-8. Probowalem juz konwersje iconv z ISO-8859-2 albo ISO-8859-1 - ciagle krzaki :/ Ja juz nie wiem jak to sie dzieje ;)

0

Hmm... Szczerze mówiąc u mnie to samo [Mozilla eng./Win XP Pro+SP 2]
//Dopisane:
[OT]Kooba: Masz przeglądarkę na jądrze sprzed roku??[/OT]

0

jw (Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.5) Gecko/20041108 Firefox/1.0)

widocznie firefox nie jest taki doskonały jak go malują :P

Adam: tak jakos wyszło, bo uzywam ff tylko do sprawdzania czy moje stronki sie na nim jakoś trzymają, normalnie stosuje opere ;)

0

to powinno rozwiazac Twoj problem to jest ta roznica ktora niweluje str_replace zastepujac odpowiedni znaki ASCII znakami kodowania 8859-2 mam nadzieje ze o to Ci chodzilo:

$wynik = iconv("ISO-8859-2","UTF-8",str_replace(array('ą', 'ś', 'ź', 'Ą', 'Ś', 'Ź'),
array('?', '?', 'Ľ', 'ˇ', '?', '?'), urldecode($string)));

tylko nie wiem na co Ci taka konwersja? skoro to beda tylko polskie litery UTF jest tutaj zbedne kodowanie 8859-2 w pelni zalatwia sprawe

0
Maker napisał(a)

tylko nie wiem na co Ci taka konwersja? skoro to beda tylko polskie litery UTF jest tutaj zbedne kodowanie 8859-2 w pelni zalatwia sprawe

Trzy sprawy:

  1. UTF jest dużo bardziej uniwersalny (spróbuj otworzyć stronę japońską na przykłąd w kodowaniu innym niż Unicode. To, że ma podane kodowanie, to Twojej przeglądarce nic nie mówi, bo i tak go nie rozumie. Japońskie znaczki są za to doskonale wyświetlane, jeśli są w Unicode).
  2. Nikt nie zakłada, że będą tylko polskie literki. W tym jednym linku może tak, ale w ogóle na stronie? Nie koniecznie.
  3. Unicode jest bardziej "standardowy". Jest dzisiaj domyślnym kodowaniem (zarówno w XML'u, a co za tym idzie w XHTML'u, jak i w zwykłym HTML'u. Większość nowoczesnych przeglądarek domyślnie używa tego właśnie kodowania. Już nie mówiąc o fakcie, że wszystkie współczesne systemy operacyjne się na nim opierają (Windows od NT w górę jeśli się nie mylę oraz większość *nixów, BeOS'ów i wszelkich innych ;) ).

//Maker: To wyjaśnij może w czym jest ISO lepszy od UTF? Bo ja widzę tylko bardzo znikomą oszczędność miejsca (cały 1B na polskiej literce!) i multum wad takich jak choćby wspomniane problemy z odczytaniem w systemach operacyjnych w innych językach, które nie mają milionów różnych kodowań wbudowanych.

0

chcialem Twoja wypowiedz jakos skomentowac ale podkresle stosuj cos tam gdzie potrzebne i wszystko ;)
Co do Twojeg problemu bedzie sie tyczyl jeszcze opery ona przesyla polskie znaki w postac ciagu 2 bajtowego czyli zapisanym juz jako slynny UTF ktorego kolega pochwalil wiec raczej lepij bedzie jak zastosujesz wlasna funkcje ktora bedzie zmieniala Tobie kodowanei bo z tych gotowych raczej nic nie wygrzebiesz uzytecznego. Albo na dzien dziesiejszy po prostu bedziesz sprawdzac jelsi przegladarka to opera nie uzywasz tej konwersji jaka podalem wyzej jesli tak stosjesz ja rozwiazanie moze malo przyjemne ale jakies wyjscie z sytuacji

0

To ja moze tylko dopisze ze mi dziala Śledź bez wycinania czegokolwiek :) Na ff zamienione jest na % i wartosc szesnastkowa zapewne a w operze tak jak sie pisze bez jakiejkolwiek konwersji :) Dodam jeszcze ze tak jak Dryobates nie mam windowsa i to moze miec wplyw dlaczego u was juz sa filety ze sledzia a u mnie i kuby caly sledz jest :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1