Autor | Zpráva | ||
---|---|---|---|
Pavel Straka Profil |
Dobré odpoledne, obracím se na zkušenější s prosbou o radu.
Můj problém: Pokouším se vložit na web jQuery našeptávač http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/ http://jquery.bassistance.de/autocomplete/demo/ (demo) Ten načítá data z PHP souboru (který mu vrací výsledky z databáze): $("#suggest1").autocomplete('search.php'); Vše funguje bez problémů, až na kódování českých znaků. V PHP vždy zakóduji řetězec, který se má použít jako URL funkcí urlencode(). V tomto skriptu (knihovna jquery.autocomplete.js) jsem alternativní funkci na úrovni JavaScriptu (encodeURIComponent()) nenašel, přidal jsem ji tedy do něj a částečně úspěšně - skript search.php je nyní volán se zakódovanou řetězcem, problém je ale v tom, že PHP funkce urlencode("X") vrací jiné hodnoty než JavaScript funkce encodeURIComponent("X"). Např. urlencode("č") -> "%e8" encodeURIComponent("č") -> "%c4%8d". Hledal jsem na internetu a dočetl jsem se, že encodeURIComponent() "kóduje" do UTF-8. Zkusi jsem tedy ve skriptu search.php použít jednoduchý příkaz: $_GET["q"] = iconv("UTF-8", "CP1250", $_GET["q"]); , ale bezúspěšně.
Mohl by mi tedy, prosím, někdo poradit, jak, pokud uživatel zadá nějaký nepatřičný znak (diakritika apod.) ve skriptu search.php řetězec bezpečně převést? Děkuji všem za ochotu a rady. Zapomněl jsem v textu dodat, že skript search.php, stránka s našeptávačem a vlastně celý web je v kódování windows-1250. |
||
Radek9 Profil |
Pavel Straka:
Překonvertuj ty PHP scripty do UTF-8. Předejdeš tím v budoucnu dost problémům. |
||
Pavel Straka Profil |
#3 · Zasláno: 7. 10. 2012, 12:56:20
Dobře, a kdybych svůj dotaz položil: Existuje řešení krátkodobějšího charakteru?
|
||
Radek9 Profil |
#4 · Zasláno: 7. 10. 2012, 13:08:50
Pavel Straka:
Můžeš použít již tebou zmíněný iConv: $str = "čerešničky"; $str = iConv("CP1250", "UTF-8//TRANSLIT", $str); echo URLEncode($str); |
||
Pavel Straka Profil |
To mi bohužel nefunguje. Myslím si, že já potřebuji opačný převod (ale ani to nefunguje).
Mám v $_GET["q"] hodnotu "%c4%8d" (UTF-8) a jde mi o to (jakýmkoliv způsobem) toto převést na "č" (CP-1250). |
||
Radek9 Profil |
#6 · Zasláno: 7. 10. 2012, 15:34:39
Pavel Straka:
Podle mě by na tohle bylo opravdu nejlepší používat pro celý projekt UTF-8. Pokud používáš nějaký slušnější editor, tak by to mělo jít rychle převést. |
||
Davex Profil |
Pavel Straka:
Asi jsem nepochopil, proč potřebuješ použít urlencode() v PHP. Prohlížeči snad nemusíš odesílat zakódovaná data.
Doufám, že jsem pochopil správně o co se snažíš. (JS -> AJAX request -> encodeURIComponent -> PHP -> rawurldecode() -> DB SELECT -> echo dat -> JS -> AJAX callback -> zobrazení na stránce) AJAX by měl nativně pracovat v UTF-8 a na kódování vlastní stránky by nemělo záležet. |
||
Radek9 Profil |
#8 · Zasláno: 7. 10. 2012, 16:03:34
Davex:
„na kódování vlastní stránky by nemělo záležet“ To sice v tomhle případě asi úplně ne, ale stejně to je špatnej zvyk mít projekt ve více různejch kódováních. Potom se může seknout na něčem jiným, takže to radši sjednotit hned. |
||
Davex Profil |
#9 · Zasláno: 7. 10. 2012, 16:38:08
Radek9:
V tom souhlasím, ale při úpravě staršího webu si to vyžádá náklady navíc, které nemusí být zadavatel ochoten zaplatit. |
||
Pavel Straka Profil |
#10 · Zasláno: 7. 10. 2012, 17:40:19
Radek9,Davex: Nakonec se ten převod ukázal jako nejlepší řešení. Děkuju
|
||
Časová prodleva: 13 let
|
0