Pagina 26 di 37 primaprima ... 16 24 25 26 27 28 36 ... ultimoultimo
Visualizzazione dei risultati da 251 a 260 su 366
  1. #251
    bene, io continuo a non capire

    mi date una sola lettera che php serializza e deserializza in bytes e risltano essere differenti dal numero dei caratteri così traggo le mie conclusioni ? grazie

    P.S. potrebbe essere una soluzione encodare con utf8, per esempio, i dati prima di inviarli ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #252
    ehm ... basta avere php correttamente impostato e gestisce l'utf8 normalmente, come l'iso-xxxx-1 e 15



    se c'è installata questa estensione tutto lavorerà perfettamente
    http://it2.php.net/mbstring

    e siccome nel 99% dei casi ci sta il problema non vedo dove stia
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #253
    Originariamente inviato da andr3a
    bene, io continuo a non capire

    mi date una sola lettera che php serializza e deserializza in bytes e risltano essere differenti dal numero dei caratteri così traggo le mie conclusioni ? grazie

    P.S. potrebbe essere una soluzione encodare con utf8, per esempio, i dati prima di inviarli ?
    Basta una qualsiasi lettera accentata rappresentata in UTF-8.
    Occupa 2 byte ma è un carattere unico.

    Come fai?
    Salva il file .php come UTF-8, con dentro scritto
    echo strlen('è');
    e vedi quanto viene fuori

    L'unica soluzione che vedo è quella di far sì che questa classe abbia alcune codifiche predefinite come requisito per funzionare. Almeno UTF-8 e ISO-8859-1, al limite.
    Sennò lato client non hai modo di calcolare il numero di byte occupato dalla stringa, affinché il PHP la possa deserializzare senza problemi.

  4. #254
    Originariamente inviato da daniele_dll
    se c'è installata questa estensione tutto lavorerà perfettamente
    http://it2.php.net/mbstringstia
    Io non vedo una mb_unserialize(), veramente. :master:
    Mi stai dicendo che la presenza dell'estensione cambia anche il comportamento della normale unserialize()? Mi sembra strano...

    Perché il problema è proprio questo.

  5. #255
    Originariamente inviato da skidx
    Basta una qualsiasi lettera accentata rappresentata in UTF-8.
    skidx ma questadi la l'avevi vista ???

    no perchè a me non fa niente di quello che dici ... lavora perfettamente ...
    codice:
    <?php
    $test1 = 'ÎÑTËRÑÅTÌÔñÁL';
    $test2 = serialize($test1);
    echo $test1.'
    '.$test2.'<hr />';
    echo "
    <script>
    	var php = new PHP_Serializer();
    	var test = php.unserialize('{$test2}');
    	document.write(test + '
    ');
    	document.write(php.serialize(test));
    </script>";
    ?>
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #256
    http://it2.php.net/manual/it/ref.mbs...tring.overload

    mmm li non è indicato comunque ci sta anche
    http://it2.php.net/manual/it/ref.iconv.php

    e

    http://it2.php.net/manual/it/ref.recode.php

    però quello che non capisco è il vostro problema ...

    se voi spedite a javascript una stringa come iso-xxxx-1 ed è utf8 ma nell'header specificate che è iso-xxxx-1 questa verrà interpretata come iso-xxxx-1 e non come utf8

    codice:
    <?php
    
    if (isset($_GET['utf8']))
    {
      header("Content-type: text/html; charset=UTF-8");
    }
    else
    {
      header("Content-type: text/html; charset=ISO-8859-1");
    }
    
    $test = array('1 - è un test','2 - è un test');
    
    $test[1] = utf8_encode($test[1]);
    
    echo serialize($test);
    
    ?>
    se a questo scriptino non passate nulla verrà tutto inviato come iso-xxxx-1 e quindi verrà correttamente stampato a video il numero di caratteri

    il serialize, OVVIAMENTE, lavora con i bytes, ma se voi gestite tutto usando iso-xxxx-1 invece che utf8 ed usando l'apposito header, quando javascript riceve i dati riceverà quell'insieme di dati e non altro e quando li inserisce nella pagina web, siccome è codificata in modo diverso si dovrebberò anche vedere in modo diverso

    (ho appena fatto la prova e va

    codice:
    <?php
        header("Content-type: text/html; charset=UTF-8");
    ?>
    
    <script>
        document.write("è un test");
    </script>
    visualizza correttamente la è pur avendo dei dati in formato iso-xxxx-1 (se cosi si può dire))

    ------

    resoconto ... voi lavorate sempre con iso-xxxx-1 e impostatelo nell'header (forzandolo in modo da evitare problemi e possibili conflitti) e vi siete risolto il problema
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #257
    Originariamente inviato da andr3a
    skidx ma questadi la l'avevi vista ???

    no perchè a me non fa niente di quello che dici ... lavora perfettamente ...
    Andrea, io sono partito dalla vostra segnalazione del problema con le stringhe multibyte, e provavo a spiegarvi il perché del problema.
    Se poi il php riesce a deserializzare qualcosa anche se la lunghezza indicata nel formato non è quella da lui prevista, ben venga, avete risolto, ma se il tizio ha indicato il problema forse è perché l'ha riscontrato, no?

    Se la unserialize() funziona anche con dati sbagliati, il problema non c'è.

  8. #258
    Originariamente inviato da daniele_dll
    resoconto ... voi lavorate sempre con iso-xxxx-1 e impostatelo nell'header (forzandolo in modo da evitare problemi e possibili conflitti) e vi siete risolto il problema
    e dire che questa la metto di default in qualunque sito ..
    <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />

    ... ma il fatto è che a questo punto il problema esiste SOLO se si forza l'header in utf8 e non viceversa ... ovvero, almeno da me, il PHP lavora di default con charset iso-8859-1 ... allora perchè il russo rompe le bolle ? :master:
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #259
    Originariamente inviato da daniele_dll
    resoconto ... voi lavorate sempre con iso-xxxx-1 e impostatelo nell'header (forzandolo in modo da evitare problemi e possibili conflitti) e vi siete risolto il problema
    Certo, allora bisogna mettere che la classe è destinata solo ad americani e europei dell'area latina, perché gli altri non sanno cosa farsene.

  10. #260
    Originariamente inviato da skidx
    Se la unserialize() funziona anche con dati sbagliati, il problema non c'è.
    no, il php serializza e deserializza in modo identico al javascript della mia PHP_Serializer , quindi correttamente
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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 © 2026 vBulletin Solutions, Inc. All rights reserved.