Autor Zpráva
venca12
Profil
Ahoj, v js pracuju s polem, které potřebuju předat do php. Použiju tedy funkci serialize a pošlu si pole do php. Do teď je všechno v pohodě.

Problém nastává v případě, že serializuju nějaký string s diakritikou, například 'č'. Javascript správně serializuje string a předá ho do php v podobě viz příklad:
s:1:"č";


Nyní pokud provedu unserialize, dostanu zpět místo č otazník.

Pokud řetězec 'č' serializuju v php dostanu řetězec
s:2:"č";


Rozdíl je v tom, že php, dle mého předpokladu, nějak pochybně zpracovává multibyte kódování, resp. používá ve funkci serialize, funkci strlen, která vrací u českých znaků délku 2 místo 1.

Pokud v js serializuju pole, kde je několik položek s českými znaky, nevrátí se mi ani otazník, protože se pole díky nekorektní délkám stringů v php celé rozhází.

A tady je můj dotaz: Setkal se s tím někdo z Vás? Pokud ano jak jste to řešili, resp. co myslíte, že bude lepší:

*) Upravit js funkci serialize, aby taky tak, jako php funkce zvýšila u každého českého znaku celkovou délku řetězce o 1

*) Všechny řetězce zakódovat base64, tím se zbavím všech českých znaků, pak to zaserializuju pošlu do skriptu, odserializuju a odkoduju base64

Předem díky petovi, za to, že mi to tady nezaplevelí! (tzn. vůbec nic sem nebude psát)
tiso
Profil
Nestretol som sa s tým, ale v akom kódovaní máš ten Javascript? nestačilo by serializovaný text prekódovať cez iconv a až potom s ním pracovať v PHP?
venca12
Profil
zkoušl jsem utf i win1250, asi jsem měl dodat, že to je php4
venca12
Profil
kecám, máš pravdu, když to hodím do win1250, tak to počítá délku správně, v utf8 se to sype
peta
Profil
venca12
v UTF cestinu nezna a spravne pouzije UTF-16
DFly
Profil *
posilej spravne hlavicky
Toto téma je uzamčeno. Odpověď nelze zaslat.