Diskuze: odstraneni a nebo vubec nevlozeni BOM do json stringu

JavaScript JavaScript odstraneni a nebo vubec nevlozeni BOM do json stringu

Avatar
petr
Redaktor
Avatar
petr:

Ahoj, v php vytvářím json string z pole pomoci json_encode. Na straně klienta mám $.ajax který tento json načte, ale tady nstava problém, Pokud uvedu dataType:"json" ajax ohlasi parseerror - vola funkci v error:, pokud dataType neuvedu a načtu to jako string, error zahlásí funkce parseJSON. Když si string výpíšu, vidím že obsahuje BOM. Lze se ho nějak zbavit? Kdo ho tam vůbec vkládá? Výstup z PHP ho neobsahuje. Děkuji.

 
Odpovědět 22.4.2014 13:24
Avatar
Standa
Člen
Avatar
Standa:

Ahoj,
právě jsem narazil na tvůj dotaz. Mám úplně stejný problém. Největší tragédie je, že mi to fungovalo bez problémů, než jsem se pokusil všechny zdrojové soubory převést na jednotné kódování UTF-8. Našel jsi nějaké řešení? Budu vděčný za každou radu, už se s tím trápím dva dny. Díky. Standa

 
Nahoru Odpovědět 22.5.2014 12:21
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Standa
David Čápka:

A posíláš před jsonem také header?

header('Content-type: text/json; charset=utf8');
Nahoru Odpovědět 22.5.2014 12:32
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Standa
Člen
Avatar
Odpovídá na David Čápka
Standa:

Posílám

$arrayToJs = array();
$arrayToJs['hash'] = $hash;
header('Content-type: text/json; charset=utf8');
echo json_encode($arrayToJs);

a výsledek

{"hash":"d41d8cd98f00b204e9800998ecf8427e"}
Editováno 22.5.2014 12:57
 
Nahoru Odpovědět 22.5.2014 12:55
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Standa
David Čápka:

Tak musíš mít ten soubor špatně kódován, dělám tohle běžně a nikdy jsem s tím neměl problém. Asi to kóduješ s BOM. Je dobré kvůli tomuhle používat nějaké chytré IDE, které to kódování řeší za tebe.

Nahoru Odpovědět 22.5.2014 15:01
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Standa
Člen
Avatar
Standa:

Používám Visual Studio 2010, kvůli tomuto problému jsem si nainstaloval i PSPad a Notepad++ a pořád na to nemůžu přijít. Máš pravdu, problém je v kódování, já to u jiných aplikací používám taky bez problémů. Budu ještě experimentovat. Díky.

 
Nahoru Odpovědět 23.5.2014 7:18
Avatar
Standa
Člen
Avatar
Standa:

Problémem byl editor, MS Visual Studio. Když jsem všechny zdrojové soubory vyeditoval a uložil v PSPadu, bylo všechno v pořádku. V VS jsem nastavení BOM znaků v UTF-8 zatím nenašel. Díky.

 
Nahoru Odpovědět 23.5.2014 17:32
Avatar
Nahoru Odpovědět 23.5.2014 17:36
Nesnáším {}, proto se jim vyhýbám.
Avatar
Standa
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Standa:

To ano, ale ani jedno nastavení mi nezabralo na BOM znaky.

 
Nahoru Odpovědět 23.5.2014 17:46
Avatar
Odpovídá na Standa
Michal Žůrek (misaz):

pokud vím dobře, tam BOM má jenom UTF-8, neříkej že sis v tom dlouhém seznamu nevybral.

Nahoru Odpovědět 23.5.2014 17:50
Nesnáším {}, proto se jim vyhýbám.
Avatar
coells
Redaktor
Avatar
Odpovídá na Standa
coells:

VS 2010: File -> Save As -> Save [rozklikni sipecku] -> Save with Encoding -> Unicode (UTF-8 without signature) nebo Unicode (UTF-8 with signature)

BOM je velice užitečná věc a nepoužívá ji jen UTF-8, ale každý unicode encoding se může takhle identifikovat.

 
Nahoru Odpovědět 23.5.2014 18:32
Avatar
Standa
Člen
Avatar
Standa:

Já jsem chtěl UTF-8, ale bez BOM a to se mi nepovedlo. V PSPadu je toto nastavení. Ve VS jsem nic podobného nenašel.

 
Nahoru Odpovědět 23.5.2014 18:33
Avatar
coells
Redaktor
Avatar
Odpovídá na Standa
coells:

tak zkus můj postup v předchozím příspěvku

 
Nahoru Odpovědět 23.5.2014 18:36
Avatar
Standa
Člen
Avatar
Odpovídá na coells
Standa:

Jestli to dobře chápu, tak signature je BOM? Díky.

 
Nahoru Odpovědět 23.5.2014 18:37
Avatar
coells
Redaktor
Avatar
Odpovídá na Standa
coells:

Ano, soubor jsem si takhle uložil s i bez BOM.

 
Nahoru Odpovědět 23.5.2014 18:41
Avatar
Standa
Člen
Avatar
Odpovídá na coells
Standa:

Díky za radu. Standa

 
Nahoru Odpovědět 23.5.2014 18:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.