Blog
Nov
21
UTF-8 e jQuery
webmaster: 21/11/08 @ 23:36Ho risolto un paio di piccoli, ma fastidiosissimi bug, all'editor WYSIWYG. Dovrei esserne contento, ma la soluzione che ho usato per farlo è davvero pessima e non scalabile.
Come forse avrete notato quando si cercava di postare un commento alle news o a questo blog contente alcuni precisi simboli, questi venivano visualizzati nel commento come un punto di domanda.
Il problema è che, per motivi a me sconosciuti, jQuery effettua un encoding strano di alcuni caratteri. Mi spiego meglio. jQuery effettua una codifica in UTF-8 di tutto quanto viene trasmesso tramite la propria funziona AJAX. Fin qui nulla di male. Il problema è che di alcuni caratteri effettua una codifica strana (uno di questi è il carattere dell'Euro €). Cioé non è UTF-8 (ho provato a decodificarli sia con utf8_encode() che con utf8_decode()) e non è nulla che io o il PHP sembri riconoscere.
La soluzione ideale sarebbe stata quella di sistemare tutti i problemi di encoding via PHP quando lo script riceve il testo, ma non sono riuscito a farla funzionare.
La soluzione che ho adottato - quella pessima - è stata di far trasformare il simbolo dell'Euro in € dallo script Javascript prima che questo venga inviato tramite AJAX. Certo, questo funziona, ma solo perché il numero di caratteri problematici è minima. Questo sistema non è assolutamente gestibile su larga scala.
Qualcuno ha riscontarto problemi simili con jQuery?
Come forse avrete notato quando si cercava di postare un commento alle news o a questo blog contente alcuni precisi simboli, questi venivano visualizzati nel commento come un punto di domanda.
Il problema è che, per motivi a me sconosciuti, jQuery effettua un encoding strano di alcuni caratteri. Mi spiego meglio. jQuery effettua una codifica in UTF-8 di tutto quanto viene trasmesso tramite la propria funziona AJAX. Fin qui nulla di male. Il problema è che di alcuni caratteri effettua una codifica strana (uno di questi è il carattere dell'Euro €). Cioé non è UTF-8 (ho provato a decodificarli sia con utf8_encode() che con utf8_decode()) e non è nulla che io o il PHP sembri riconoscere.
La soluzione ideale sarebbe stata quella di sistemare tutti i problemi di encoding via PHP quando lo script riceve il testo, ma non sono riuscito a farla funzionare.
La soluzione che ho adottato - quella pessima - è stata di far trasformare il simbolo dell'Euro in € dallo script Javascript prima che questo venga inviato tramite AJAX. Certo, questo funziona, ma solo perché il numero di caratteri problematici è minima. Questo sistema non è assolutamente gestibile su larga scala.
Qualcuno ha riscontarto problemi simili con jQuery?
Commenti: 5
Post correlati:
- [04/07/10] Bug jQuery Cleartype su Internet Explorer
- [23/06/09] jQuery e ulteriore riduzione JavaScript e JPEG
- [24/01/09] jQuery 1.3.1
- [13/12/08] Ottimizzazioni per il blog
- [26/08/08] Due piccole modifiche e un bug
I commenti dei lettori:
Dylan666
il 25 Novembre 08 @ 23:04 pm
Già visto questo?
http://www.nabble.com/UTF ...
lems-td5131568s27240.html
webmaster
il 26 Novembre 08 @ 01:14 am
non conoscevo, ma sembra molto, molto interessante. appena ho un attimo per testarlo lo faccio. grazie davvero!
webmaster
il 30 Novembre 08 @ 14:25 pm
Già visto questo?
http://www.nabble.com/UTF ...
lems-td5131568s27240.html
dylan, ho provato, ma non sembra funzionare: evidentemente i mio codice è
peggiore di quanto pensassi. grazie lo stesso per il suggerimento.
Dylan666
il 01 Dicembre 08 @ 10:00 am
Il problema comunque è diffuso:
http://stackoverflow.com/ ... -textarea-with-jqueryajax
webmaster
il 01 Dicembre 08 @ 19:23 pm
bon, almeno sono in buona compagnia :)