Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    [ARTICOLO] PHP 5.2 e JSON

    Ho letto rapidamente l'interessante articolo di Gabriele ma vorrei chiedervi se il comportamento della lib JSON (compreso quello della classe Pear ...) sia normale.

    In pratica non ho capito perchè non converte come da specifiche i caratteri da %x00 a %x1f ... mentre la Pear addirittura converte di tutto e di più .... anche caratteri che non richiedono conversione ad \uXXXX ...

    Codice PHP:
    <?php
    header
    ("content-type: text/html; charset=utf-8");
    for(
    $a 1$a 128$a++)
        echo 
    json_encode(array(utf8_encode(chr($a)))).json_encode(array(chr($a))).'
    '
    ;
    ?>
    non vedo niente di quanto dovrei invece vedere facendo la stessa cosa con javascript, quindi non mi rende la stringa compatibile.

    Qualcuno può illuminarmi ?




    [edit]
    altra domanda, forse per Gabriele .... credi sia opportuno inviare stringhe JSON con encodeURIComponent ?

    Non hai usato nessun tipo di parser in invio, è per fare l'esempio semplice e compatibile o perchè con JSON non c'è bisogno di encodare una fava ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #2
    up ? :master:
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Gabriele !!!
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    nessuno ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    ci riprovo:

    1 - qualcuno può confermarmi che sia la PECL che la Pear non encodano come previsto i carattiri da x00 a x1F ?

    2 - una volta create la stringa JSON conviene usare encodeURIComponent oppure si invia così com'è ???


    So che in teoria i caratteri fastidiosi vengono convertiti ma resta la &, ad esempio, che spezza le stringhe (separatore di chiavi valori).

    Visto che l'unico modo è inviare con encodeURIComponent, le interazioni JSON devono sempre usare rawurlencode/decode e/o utf8_decode in ricezione ed utf8_encode in risposta ?


    ... speriamo che qualcuno risponda
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    non so come renderti l'idea, ma se uno utilizza una libreria in genere è perché non ha voglia di entrare nei più piccoli meccanismi di funzionamento della stessa

    dovresti provare a rivolgerti alla lista php-dev o a qualcosa di analogo per pear (ci dovrebbero essere i nomi degli autori sulla pagina dell'estensione) per avere delle informazioni tanto dettagliate e di nicchia quanto quelle che stai cercando

  8. #8
    ma almeno confermarmi che le due lib, compilata e Pear, sono buggate no ?



    vabbeh, in caso chiederò a Rasmus Lerdorf che mi ascolterà di sicuro
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    allora, ho fatto un pò di tests ... visto mai tornassero utili a qualcuno.

    Per interagire tramite Ajaj (Asyncronous JavaScript and JSON) è indispensabile inviare il (o i) parametri dopo averli encodati con encodeURIComponent.


    Per chi ancora avesse dubbi sul perchè escape non vada bene ho scritto sul mio blog un post apposito: http://webreflection.blogspot.com/20...omparison.html


    Dall' altra parte, PHP, non serve a niente fare rawurldecode perchè il webserver (o il PHP) accetterà la variabile come UTF-8, quindi eventualmente l'unica cosa da fare se non si vuole usare la stringa in UTF-8 (query, cose in db, salvataggio su files, altro) è necessario solo trasformarla con

    utf8_decode($_POST["parametro_ajaj"])

    Per quanto riguarda l'invio da PHP a javascript in formato JSON non è necessario sfruttare rawurlencode perchè il JS leggerà la pagina e non una serie di coppie chiavi valore.

    E' necessario però utilizzare utf8_encode qualora la codifica di default non sia UTF-8 al fine di permettere al JavaScript di interpretare correttamente anche i caratteri accentati o altro.



    Ricapitolndo

    JS -> PHP , formato JSON
    variabile post o get in chiamata XMLHttpRequest verso pagina PHP
    - utilizzare encodeURIComponent sia per le chiavi che per i valori
    - in PHP utilizzare utf8_decode se non si usa la codifica UTF-8 per trattare le stringhe
    - in PHP non è necessario (salvo configurazioni particolari) utilizzare rawurldecode

    PHP -> JS , formato JSON
    - utilizzare utf8_encode($stringa_JSON) in output, in caso sarebbe meglio, ma non è indispensabile, mettere anche l'header text/plain con charset utf-8 (ma funziona lostesso)
    - non è necessario utilizzare rawurlencode, se lo si utilizza in javascript bisogna usare decodeURIComponent ma in questo modo si ingigantisce solo l'output in uscita
    - in JavaScript non è necessario fare niente, le stringhe saranno compatibili ed i caratteri rispettati


    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Originariamente inviato da andr3a
    vabbeh, in caso chiederò a Rasmus Lerdorf che mi ascolterà di sicuro
    su php-dev non ci sta mica solo lerdorf :E
    e sono convinto che il mantainer principale della classe pear o quello del modulo pecl sapranno dirti se il loro lavoro è buggato :E

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.