Pagina 28 di 37 primaprima ... 18 26 27 28 29 30 ... ultimoultimo
Visualizzazione dei risultati da 271 a 280 su 366
  1. #271
    skid ... ma mi spieghi xche mai dovresti passare i dati in utf8?

    non c'è ASSOLUTAMENTE motivo di farlo ... xche i dati che passi sono solo dati, la visualizzazione di questi è un'altra cosa

    guarda i miei 2 esempi
    - trasferimento dei dati
    - visualizzazione dei dati

    lavorano come ho detto io e lavorano entrambi senza alcun problema
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  2. #272

  3. #273
    Originariamente inviato da daniele_dll
    skid ... ma mi spieghi xche mai dovresti passare i dati in utf8?

    non c'è ASSOLUTAMENTE motivo di farlo ... xche i dati che passi sono solo dati, la visualizzazione di questi è un'altra cosa

    guarda i miei 2 esempi
    - trasferimento dei dati
    - visualizzazione dei dati

    lavorano come ho detto io e lavorano entrambi senza alcun problema
    Daniele, secondo me non hai ancora capito quale è il problema.

    Il problema c'è nel momento in cui il Javascript vuole passare al PHP una stringa multibyte. Perché deve passare una stringa multibyte? Perché se la pagina usa una codifica multibyte, i dati inseriti in un form ad esempio, conterranno stringhe multibyte. Perché se deve leggere il contenuto di un div e passarlo al php, quel div può contenere stringhe multibyte.
    Ora, quando il javascript prepara il pacchetto da mandare al PHP, per ogni stringa ci scrive dentro il numero di caratteri, che è diverso dal numero di byte, e quindi il php quando esegue la unserialize() se la fa nelle mutande perché il numero di byte che si aspetta (quello dichiarato nel pacchetto) è diverso da quelli che poi trova.

    E' chiaro o no?

  4. #274
    non solo, anche se si facesse
    codice:
    function truelen(s){
     var c, d = "";
      var l=s.length
      for (var i = 0; i < l; i++) {
        c = s.charCodeAt(i);
        if (c <= 0x7f) {
          d += s.charAt(i);
        } else if (c >= 0x80 && c <= 0x7ff) {
          d += String.fromCharCode(((c >> 6) & 0x1f) | 0xc0);
          d += String.fromCharCode((c & 0x3f) | 0x80);
        } else {
          d += String.fromCharCode((c >> 12) | 0xe0);
          d += String.fromCharCode(((c >> 6) & 0x3f) | 0x80);
          d += String.fromCharCode((c & 0x3f) | 0x80);
        }
      }
      return d.length;
    }
    e la si salvasse in php corretto,
    poi js vedrebbe una stringa di 9 caratteri con scritto 24 come lunghezza

  5. #275
    codice:
    <?php
    header("Content-type: text/html; charset=UTF-8");
    $test0 = utf8_encode('ÎÑTËRÑÅTÌÔñÁL');
    $test1 = urlencode($test0);
    $test2 = serialize($test1);
    echo "{$test2}
    ".urldecode(unserialize($test2))."<hr />
    <script src=\"PHP_Serializer.js\"></script>
    <script src=\"UTF8.js\"></script>
    <script>
    	var php = new PHP_Serializer();
    	var test1 = php.unserialize('{$test2}');
    	var test2 = php.serialize(test1);
    	document.write(UTF8.decode(unescape(php.unserialize(test2)))+ '
    ');
    	document.write(php.serialize(escape(UTF8.encode('{$test0}'))) + '
    ');
    </script>";
    ?>

    s:58:"%C3%8E%C3%91T%C3%8BR%C3%91%C3%85T%C3%8C%C3%9 4%C3%B1%C3%81L";
    ÎÑTËRÑÅTÌÔñÁL
    ---------------
    ÎÑTËRÑÅTÌÔñÁL
    s:58:"%C3%8E%C3%91T%C3%8BR%C3%91%C3%85T%C3%8C%C3%9 4%C3%B1%C3%81L";

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #276
    Originariamente inviato da skidx
    Daniele, secondo me non hai ancora capito quale è il problema.

    Il problema c'è nel momento in cui il Javascript vuole passare al PHP una stringa multibyte. Perché deve passare una stringa multibyte? Perché se la pagina usa una codifica multibyte, i dati inseriti in un form ad esempio, conterranno stringhe multibyte. Perché se deve leggere il contenuto di un div e passarlo al php, quel div può contenere stringhe multibyte.
    Ora, quando il javascript prepara il pacchetto da mandare al PHP, per ogni stringa ci scrive dentro il numero di caratteri, che è diverso dal numero di byte, e quindi il php quando esegue la unserialize() se la fa nelle mutande perché il numero di byte che si aspetta (quello dichiarato nel pacchetto) è diverso da quelli che poi trova.

    E' chiaro o no?
    ah ecco, il problema quindi è nella serializzazione da parte di javascript dei dati
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #277
    andrea, quella stringa è cresciuta così tanto che quasi quasi ti conviene passare i dati in XML

    Scherzi a parte, la utf8_encode() del PHP funziona solo da ISO-8859-1, quindi di fatto stai comunque limitando l'uso a quei due charset che dicevo io prima.
    Che è una scelta sensata (se l'ho proposta... ), solo che a quel punto ti conviene risparmiare lavoro sul server e scrivere la funzione che ti dicevo sul client.

  8. #278
    Originariamente inviato da daniele_dll
    ah ecco, il problema quindi è nella serializzazione da parte di javascript dei dati
    e nella deserializzazione, sempre di JS, dei dati da PHP su output utf8 ...


    cmq ho risolto, ora devo mettere commenti e credits alla mia versione "stravelocizzata" della UTF8 e poi devo scrivere da qualche parte come caspita usare l' UTF se presente ... la serialize di JS rimane così, chi avrà bisogno di UTF8 si parsa le singole stringhe per i fatti suoi, altrimenti ciao
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #279
    Originariamente inviato da skidx
    Che è una scelta sensata (se l'ho proposta... ), solo che a quel punto ti conviene risparmiare lavoro sul server e scrivere la funzione che ti dicevo sul client.
    è quello che ho fatto :master:
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #280
    Originariamente inviato da andr3a
    è quello che ho fatto :master:
    Forse ho capito male il codice, scusa.
    Ho visto che hai usato una utf8_encode() + urlencode() lato server.

    Ti dicevo che la utf8_encode() funziona solo con iso-8859-1 in ingresso, quindi tanto vale non usarle, se richiedi l'uso di utf-8 e iso-8859-1 lato client.

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.