Autor | Zpráva | ||
---|---|---|---|
venca12 Profil |
#1 · Zasláno: 11. 2. 2007, 13:24:28
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 |
#2 · Zasláno: 11. 2. 2007, 13:45:22 · Upravil/a: tiso
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 |
#3 · Zasláno: 11. 2. 2007, 14:18:09
zkoušl jsem utf i win1250, asi jsem měl dodat, že to je php4
|
||
venca12 Profil |
#4 · Zasláno: 11. 2. 2007, 14:21:07
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 |
#5 · Zasláno: 11. 2. 2007, 17:57:03
venca12
v UTF cestinu nezna a spravne pouzije UTF-16 |
||
Časová prodleva: 3 měsíce
|
|||
DFly Profil * |
#6 · Zasláno: 18. 5. 2007, 02:48:47
posilej spravne hlavicky
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0