Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Polskie znaki z $_GET
Forum PHP.pl > Forum > Przedszkole
Poker
Witam serdecznie,

Mam problem z którym męczę się od wczoraj i nie ma żadnych efektów.

Więc tak, do $_GET'a wrzucam sobie tytuł podstrony (dla przykładu podam : http://technologie.gazeta.pl/internet/1,10...t_Intela_.html)

W pasku pojawia mi się "Apple%20zastrzega%20%B3%B1cze%20Thunderbolt%20Intela?"

Gdy robię sobie
Kod
<?php echo $_GET['tytul']; ?>


Wyświetla mi: Apple zastrzega łącze Thunderbolt Intela?

Zaś po dodaniu do bazy danych mam: Apple zastrzega ??cze Thunderbolt Intela?



Kolejny problem jaki zauważyłem jest taki że pobierając tytuły stron, raz w $_GET mam coś takiego "Apple%20zastrzega%20%B3%B1cze%20Thunderbolt%20Intela" a pobierając z innej strony pojawiają mi się normalne polskie znaki i nie wiem od czego to zależy?
Czy od kodowania samej strony?

Oczywiście tytuły podstron nie są pobierane z mojego serwisu, pobieram tytuły z serwisów gdzie umieszczone są różne obrazki np wp.pl, gazeta.pl, by później te obrazki wyświetlać u siebie i jako tytuł obrazka chciałbym ustawiać właśnie tytuł tejże podstrony.

Pomożecie? Bo już sobie nie radzę.

Kodowanie bazy, plików jest poprawne Bo raz się dodaje a raz nie smile.gif

Z mojego dochodzenia wychodzi że problem leży właśnie w tych adresach : "Apple%20zastrzega%20%B3%B1cze%20Thunderbolt%20Intela" których nie potrafię ładnie podmienić na z polskimi znakami.

Kombinuję z wieloma funkcjami w manualu niestety nie wiem która jest właśnie do czegoś takiego i czy w ogóle taka jest, na chwile obecną nic nie działa.
ixpack
Przyklejony Topic - o polskich znakach //edit - nie doczytałem wink.gif

Ponad to - kod skryptu pokaż wink.gif pewnie jest gdzieś pominięte _urldecode() albo encode() ? utf8_decode()?
Poker
Cytat(ixpack @ 10.03.2011, 13:14:58 ) *
Ponad to - kod skryptu pokaż wink.gif pewnie jest gdzieś pominięte _urldecode() albo encode() ? utf8_decode()?


Jak stosuje urlencode() to owszem wszystko mi się zamienia wtedy na te znaki ł -> %B3 spacja-> +

Potem robię urldecode() i mam ten sam wynik jaki otrzymuję bez dodawania urlencode()


Nie rozumiem czemu jak pobieram tytuł z podstrony: http://fashionelka.pl/pasiasty-plaszcz-i-welniany-komin/ w GET mam ładne polskie znaczki i jak dodaję do bazy to zapisują się one.

A z niektórych stron jak doda mi się tytuł do GET'a to wtedy pojawiają się te %B3 %20, skąd to się bierze?


nie ma sensu pokazywać skryptu bo nie stosuję żadnej podmiany tych znaków na razie ponieważ i tak nic nie działa...

ixpack
Idąc dalej tym tropem... Jakie kodowanie mają "oni" na stronkach?

Nie kodujesz 2krotnie niektórych stringów? Tj. urlencode?

Np:

  1. $string = "bąk to smród";
  2. $encode1 = urlencode($string);
  3. $encode2 = urlencode($encode1);
  4. echo $string.'<hr />';
  5. echo '1 encode = '.$encode1.' 1 decode = '.urldecode($encode1).'<hr />';
  6. echo '2 encode = '.$encode2.' 1 decode = '.urldecode($encode2).'<hr />';
  7. echo '2 encode = '.$encode2.' 2 decode = '.urldecode(urldecode($encode2)).'<hr />';
Poker
Niestety chyba się nie rozumiemy.

urlencode nie ma u mnie ŻADNEGO znaczenia.

W momencie czy go stosuję lub nie stosuję do bazy dodawany jest ten sam wynik więc to nie ma żadnego znaczenia.


Wygląda to tak:

z gazeta.pl chcę pobrać tytuł podstrony i w GET mam treść z %20%B3%B1 zamiast spacji i polskich znaków (dodając do bazy nie wyświetlają się polskie znaki, zamiast nich są pytajniki)
z fashionelka.pl chcę pobrać tytuł podstrony i w GET mam treśc z polskimi znakami (dodając do bazy poprawnie wyświetlają się polskie znaki)


gdy dane z GET z gazeta.pl (czyli te z dziwnymi znaczkami %20%B3%B1) wyświetlam sobie poprzez echo $_GET['tytul'] na stronie widzę poprawne dane, czyli mimo iż w adresie są znaczki %20%B3%B1 wyświetla mi wszystko poprawnie, dopiero jak dodaję do bazy to nie pojawiają się polskie znaki

Ale nie problem jest z bazą, bo jak dodaję z fashionelka tytuł to tam pojawiają się poprawnie polskie znaki, więc wykluczone jest kodowanie.

I tutaj właśnie to co mnie najbardziej dziwi to to czemu z gazeta.pl w adresie mam te %20%B3%B1 a jak pobierał tytuł z fashionelka to mam normalne poprawne znaki.


Problem polega na tym że te %20%B3%B1 nawet jak zamieniam tym urldecode to i tak to nic nie daje, bo do bazy dodają się te same znaki jak ze zwykłego $_GET['tytul']; dlatego nie stosuję teraz niczego bo u mnie i tak nie ma żadnej różnicy

Kodowania plików mam utf-8 bez bom
baza zakodowana dobrze, bo wszystko pięknie ładnie działa

więc tutaj szukam jakiegoś rozwiązania choć sam nie wiem jakiego bo u mnie to niestety nie działa


----------------------------------------------------------------------

Tutaj konkretny przykład i różnice jak to wygląda

----------------------------------------------------------------------

Gazeta.pl

W pasku z adresem mam: Apple%20zastrzega%20%B3%B1cze%20Thunderbolt%20Intela
Jak zrobię sobie echo $_GET['tytul']; czyli to co jest w pasku to widzę : Apple zastrzega łącze Thunderbolt Intela
Jak dodaję tego GETA do bazy danych to w bazie mam: Apple zastrzega ??cze Thunderbolt Intela



Fashionelka

W pasku z adresem mam: Pasiasty płaszcz i wełniany komin
Jak zrobię sobie echo $_GET['tytul']; czyli to co jest w pasku to widzę : Pasiasty płaszcz i wełniany komin
Jak dodaję tego GETA do bazy danych to w bazie mam: Pasiasty płaszcz i wełniany komin



Więc czemu jak z gazeta.pl robię sobie ECHO to mam wynik poprawny ale jak dodaję go do bazy to już nie ma polskich znaczków? I czemu akurat tutaj na tej stronie tak jest, a czemu na fashionelka działa to poprawnie, czym to jest spowodowane że jeden tytuł wyświetla się poprawnie a drugi ma te znaczki?


ixpack
Pokaż Panie jednak kod odpowiedzialny za te dodawanie do bazy i to jak pobierasz ten tytuł - no nie ma bata, ktoś tu pomoże Ci to rozwiązać. Bo problem jest dziwny...
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.