Commenti inviati da Riksoft

Sto mostrando da 1 a 3 di 3 commenti

json_encode: prima che ci caschiate...

Ho trovato una soluzione: lasciar perdere l'encode buil in di PHP 5 ed usare quello di Zend. Zend e` modulare quindi basta tirare via la sola parte Json.

Perche` quello di Zend? Per 2 motivi:
1) Usare quello di PHP e` possibile come illustriato in questro Thread, ma un conto e` fare un utf8_encode di una stringa un altro conto e` trasformare un recordset, un oggetto, un array bidimensionale o multidimensionale, cosa che richiede costruire funzioni di iterazione specifiche per i vari casi.

2) Zend non solo assolve al punto 1, ma la libreria JSon di Zend lascia al programmatore la scelta del charset, fregandosene completamente. Cio` significa che se nella pagina si usa l'intestazione iso-8859-1 o qualsiasi altra, sara` quella che verra` usata (che e` la cosa piu` intelligente da fare!). :D

Aggiungo 2 links per gli interessati:
Confronto tra librerie JSon esistenti
http://gggeek.altervista.org/sw/article_20061113.html

e un articolo per chi non conosce Zend su come estrapolare solo JSon
http://thecodecentral.com/2007/09/13/easy-json-encodingdecoding-in-php
(anche se secondo me converrebbe estrapolare e rinominare anti-collisioni con Zend, la funzione Encode direttamente in maniera che diventi indipendente dal path. Questo mantenendo la licenza senza incorrere nel furto di codice).
Tra l'altro Zend e` BSD.

Comment Scritto da Riksoft il 22.12.2008 @ 10:43

No scusate, rettifico, e` vero... non mi ero accorto che stavo provando con json_encode remmato e json costruito manualmente.
Perche` il problema c'e` anche scrivendo manualmente
echo ({"a":"Questa è una stringa...","b":"... e anche questa"});
solo che in questo caso la soluzione che dicevo prima funziona, mentre con json_encode() no.

Comment Scritto da Riksoft il 18.12.2008 @ 18:20

In realta` la soluzione e` molto piu` semplice: basta che la pagina che deve soddisfare la chiamata ajax, ovvero la pagina php che usa json_encode() abbia come prima riga dello script:

header('Content-Type: text/html; charset=iso-8859-1');

o qualunque altro charset, magari uguale alla pagina html chiamante.

Non serve fare altro. In questo modo la pagina html ricevera` il json con i corretti caratteri èàò, ecc.

:-)

Comment Scritto da Riksoft il 18.12.2008 @ 18:11

« Torna alla pagina delle statistiche