Non credo che il problema riguardi i caratteri non latin in toto, ma i soli caratteri mult-byte: quindi cirillico, giapponese etc.etc.
[edit]
stò ravanando nella rete ... ma a me il problema non lo da mai ... con o senza escape :master:
Non credo che il problema riguardi i caratteri non latin in toto, ma i soli caratteri mult-byte: quindi cirillico, giapponese etc.etc.
[edit]
stò ravanando nella rete ... ma a me il problema non lo da mai ... con o senza escape :master:
per favore NIENTE PVT TECNICI da sconosciuti
nel config di phpObject ...Originariamente inviato da Fabio Heller
Credo che phpobject ignori il problema perchè non dovrebbe essere risolvibile con un semplice urlencode....
idem nella serialize, se multibytes è true, unescape ... fine.codice:/* MULTIBYTE SUPPORT - if true, multiByte characters are supported, but the message sizes will be bigger */ $cfg['multiByte'] = false;
poi sei tu che mi hai detto di guardare PHPObj
prende un mio script a gratis, ha il sorgente, ci lavora su fino a trovare problemi ... invece di farmi un report o contattarmi scrive ovunque che il mio oggetto è pericoloso perchè non considera i bytes come serialize fa ... quando il problema è generico dell' ECMA ... me lasarò pure presa, però non è così che ci si comporta, o no ?Originariamente inviato da Fabio Heller
Comunque te la sei presa troppo a cuore con il povero Varrah![]()
![]()
ma ... scusate ...
da quanto ho capito vi preoccupa l'interpretazione dei caratteri multibyte giusto?
dovrebbe accadere solamente con i browser che non supportano UTF-8
che ne so ... prova con netscape 4, li dovresti avere problemi![]()
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
a me no, ma lui è russoOriginariamente inviato da daniele_dll
da quanto ho capito vi preoccupa l'interpretazione dei caratteri multibyte giusto?![]()
No daniele, il problema non è del browser, è di PHP che non supporta una cippa di caratteri multibyte.
Il formato di serializzazione del PHP prevede di indicare la lunghezza della stringa. Solo che per PHP 1 carattere = 1 byte, per il resto del mondo (giustamente!) no.
Quindi se tu chiedi al JavaScript la lunghezza in caratteri di una stringa, per scriverla nel pacchetto serializzato destinato al PHP, il JavaScript ti dà quello che chiedi, e cioè la lunghezza in CARATTERI, non in byte.
Ma il PHP interpreta quel numero come numero di byte, quindi succede un casino.
Quello che serve è una funzione javascript che restituisca la lunghezza in byte di una stringa.
Io non mi ricordo ora, non esiste una specie di sizeof() in javascript? :master:
Se questa funzione non c'è, ho paura che sia necessario ciclare tutte le stringhe con charCodeAt() su ogni carattere, e non vi passa piùOriginariamente inviato da skidx
Quello che serve è una funzione javascript che restituisca la lunghezza in byte di una stringa.
Io non mi ricordo ora, non esiste una specie di sizeof() in javascript? :master:![]()
... veramente a detta del tipo è il contrario, PHP cosidera i bytes in serialize / unserialize, mentre JavaScript no, solo quanti caratteri ci sono nella stringa ... o non c'ho capito niente ?
tutti i links che ho visitato parlano di charCodeAt confrontato poi con un pò di numeri e poco altro ... massacrante per il JS in serializzazione ... o deserializzazione che sia ...Originariamente inviato da skidx
non esiste una specie di sizeof() in javascript? :master:
http://www.webmasterworld.com/forum91/3695.htm
E io che ho detto?Originariamente inviato da andr3a
PHP cosidera i bytes in serialize / unserialize, mentre JavaScript no, solo quanti caratteri ci sono nella stringa ... o non c'ho capito niente ?![]()
![]()
Se chiedi a JavaScript quanto è lunga la stringa, lui giustamente te lo dice in caratteri, non in byte.
Ma il comportamento del JavaScript è corretto, è quello del PHP ad essere antiquato e limitante.
ah, ok ... quindi ? charCodeAt ?Originariamente inviato da skidx
il comportamento del JavaScript è corretto, è quello del PHP ad essere antiquato e limitante.![]()
![]()
![]()
Sì, e inoltre il funzionamento del tutto comunque risulta limitato a delle specifiche codifiche.Originariamente inviato da andr3a
ah, ok ... quindi ? charCodeAt ?![]()
![]()
![]()
charCodeAt() restituisce il codice Unicode del carattere, ma sapere se occupa uno o più byte dipende dal charset utilizzato nella pagina.
Per esempio, la e accentata può occupare un byte in un charset e due byte in un altro, ma il suo codice Unicode restituito da charCodeAt() è sempre il medesimo.![]()