Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Konwersja polskich znakow w adresie
Forum PHP.pl > Forum > Przedszkole
Bojakki
jest jakis skrypt, ktory w php zmieni mi np: 'Dzierżoniów' na 'Dzier%C5%BConi%C3%B3w'
Czyli na format czytelny dla przegladrki w polu adresu?
Cezar708
urlencode()
Bojakki
Konwertuje, ale nie otrzymuje stringa jaki widze na pewnej stronie
zamiast

'Dzier%C5%BConi%C3%B3w'

mam

'Dzier%BFoni%F3w'

sa rozne sposoby kodowania czy co?
Cezar708
tak są różne sposoby kodowania:

Dzier%C5%BConi%C3%B3w to UTF-8
Dzier%BFoni%F3w to ISO-8859-2

możesz jeszcze popróbować z rawurlencode()
Bojakki
Niestety to samo.

Znalazlem tez funkcje: utf8_encode
i wyszlo mi:
'DzierÂżoniĂłw'
Cezar708
Cytat(Bojakki @ 11.03.2008, 22:55:49 ) *
Czyli na format czytelny dla przegladrki w polu adresu?


no ale jeśli użyjesz urlencode() to na pewno przeglądarka to zrozumie. NIe ważne czy to pochodzi z UTF-8 czy z ISO-8859-2.

Na przykład sprawdź sobie:
http://pl.wikipedia.org/wiki/Dzier%C5%BConi%C3%B3w oraz http://pl.wikipedia.org/wiki/Dzier%BFoni%F3w zobaczysz że będziesz miał ten sam wynik (bo to ten sam URL)
Bojakki
no wlasnie problem w tym, ze przegladarka zrozumiala, ale ich skrypy wewnetrzne konwertujs to i w zalenzosci od tego wybiera dane i tylko w tej pierwszej postaci, ktorej nie udaje mi sie otrzymac cos wyswietla:(
Cezar708
Cytat(Bojakki @ 11.03.2008, 23:38:38 ) *
(...) ich skrypy (...)


hmm ich skrypty... bo generalnie do dekodowanie tego co jest url służy urldecode() i zawsze mi działał poprawnie.

Myślę, że skoro nie masz dostępu do "ich skryptów" to musisz sobie napisać własna dekodującą funkcję coś na styl:

  1. <?php
  2. function myUrlEncodeSign($sign){
  3. switch($sign){
  4. case 'ż':
  5. return '%C5%BC'; break;
  6. case 'ó': 
  7. return '%C3%B3';
  8. // i tak dalej dla wszystkich polskich znakow... 
  9. default: 
  10.  return $sign;
  11. }
  12. }
  13. function myUrlEncodeWord($word){
  14. $aWord = explode("", $word);
  15. foreach( $aWord as $key => $char ){
  16. $aWord[$key] = myUrlEncodeSign($char);
  17. }
  18. return implode("", $aWord);
  19. }
  20.  
  21. echo myUrlEncodeWord('Dzierżoniów');
  22. ?>


albo spróbuj zmienić kodowanie pliku w którym robisz konwersję na UTF-8. Może pomoże

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.