Sì è un buon riferimento, il fatto comunque è che resta un qualche livello di problematicità, come peraltro anche quell' articolo stesso riconosce in conclusione. cito:
=====
Purtroppo ci sono tanti altri errori o problematiche inerenti lo scambio dati asincrono
=====
Utilizzare encodeURIComponent forse è una soluzione, io stesso potrei provarla anche se non si capisce perchè così tanti altri autorevoli autori insistono per usare unescape.
Ma il fatto che l' articolo poi menzioni la necessità di ricorrere (nel caso sul server ci sia PHP) a quanto cito:
=====
Nel caso di PHP, ad esempio, sarà sufficiente utilizzare la funzione utf8_decode prima di lavorare sui dati in ingresso, per poi eventualmente utilizzare utf8_encode prima di restituirli nuovamente al client.
=====
questo mi fa storcere un po' il naso.
Significa che il tuo DB deve essere in UTF-8 (ed io stesso suggerisco vivamente di far sì che lo sia, sempre), ma quelle conversioni utf8_encode e utf8_decode le ho vedute spesso fare cose bizzarre e inattese. Si dirà: scarsa comprensione dell' argomento. Può essere: epperò io mica sono tanto stupido, e se allora sto faticando a comprenderlo, vuol dire che qualche confusione di troppo in giro e non solo nella mia testa c'è.
Gli UTF codificano milioni di caratteri: cosa accadrà tra utf8_encode e utf8_dencode e il tuo Ajax che manda come una URL dei dati immessi dall' utente non si sa con quale keyboard, trattati con encodeURIComponent, per essere inviati ad un database utf8 case insensitive su script php che non si sa se setta NAMES e CHARACTER_SET, e anche se li setta mica è tanto sicuro come risponderanno i varii browsers... Che accadrà? ANdrà tutto liscio se usiamo encodeURIComponent? Forse.
Insomma, io mi sono affidato ad un search e replace (che dopo tutto non sembra più impegnativo che tutto il lavoro di cui sopra) e a rischio di effettuare una inversione sbagliata di un paio di caratteri dentro un post magari futile e peraltro solo in circostanze assai sfortunate, forse mi sono risparmiato un po' di mal di testa appresso a cose che dovrebbero funzionare e che troppo spesso, in 11 anni di programmazione, ho veduto non funzionare affatto come previsto dalla manualistica :-)