Kdykoli používám php/mysql/jquery k předávání dat tam a zpět, nakonec použiji následující kombinaci kódování/escapování a zdá se, že mi to funguje dobře.
1) nemusíte zde nic dělat, POKUD neposíláte URL (myslím, že je to pouze pro požadavky GET) - ale pokud posíláte url, musíte použít encodeURIComponent(url), který bude správně unikat &a speciální znaky v adrese URL (více viz zde ).
2) Použijte mysqli a vázané parametry, všechny escapování udělá za vás (přečtěte si o tom zde )
3) Toto vždy používám při echoingu dat do souboru HTML:
<?php
htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>
Tím se správně zakódují všechny speciální znaky (nepravda znamená "žádné dvojité kódování"). Také se ujistěte, že máte v horní části svých html stránek správné metaznačky UTF-8.
4) Použití json_encode by mělo vždy správně uniknout vašim datům, ale pro jistotu bych použil kód z #3. Pravděpodobně jej ale budete potřebovat pouze v případě, že vracíte data se speciálními znaky.