Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   JSON.stringify в IE8 (https://javascript.ru/forum/css-html-internet-explorer/25757-json-stringify-v-ie8.html)

sysif 14.02.2012 16:47

JSON.stringify в IE8
 
Имеем следующий незамысловатый кусок кода:
JSON.stringify({Test: "Тест1"})

Запускаем в разных браузерах - имеем:

Chrome, FF, IE9 (в т.ч в режиме совместимости c IE8) -
"{"Test":"Тест1"}"

в IE8 -
"{"Test":"\u0422\u0435\u0441\u04421"}"

Собственно, вопрос, почему IE8 ведет себя иначе и можно ли его образумить?

poorking 14.02.2012 16:51

Это вы увидели в console.log ?

alert("\u0422\u0435\u0441\u04421");


Это просто в юникоде закодированный текст, это то то же самое, просто там такая консоль, показывает как есть видимо

alert("\u0422\u0435\u0441\u04421" === "Тест1")

devote 14.02.2012 17:43

poorking,
Вы не совсем правы, попробуйте запустить в ИЕ8 вот это:
alert( JSON.stringify({Test: "Тест1"}).replace(/\\/g, '_') );

В во всех браузерах вы увидите:
{"Test":"Тест1"}

а в ИЕ8 вы увидите:
{"Test":"_u0422_u0435_u0441_u04421"}

poorking 14.02.2012 18:04

Подождите подождите, в моем IE8 нет объекта JSON (Почему у вас всех есть?). А если ТС использует библиотеку, восстанавливающую объекс, то это она виновата

Версия: 8.0.6001.18702

devote 14.02.2012 18:05

А образумить его можно так:
var normalJSONString = JSON.stringify({Test: "Тест1"}).replace(/\\u([\d]{4})/g, function(_, a){ return String.fromCharCode(parseInt(a, 16)) });

Пример проверять в ИЕ8:
alert( JSON.stringify({Test: "Тест1"}).replace(/\\u([\d]{4})/g, function(_, a){
    return String.fromCharCode(parseInt(a, 16));
}).replace(/\\/g, '_') );

devote 14.02.2012 18:06

Цитата:

Сообщение от poorking
Версия: 8.0.6001.18702

У меня такая же версия, и JSON там всегда был и есть.

poorking 14.02.2012 18:12

devote,
Как вы думаете, почему у меня его нет? Я использую библиотеку, потому что он реально нужен, но его не было тогда и нет сейчас. Попробую переустановить IE чтоли, у меня Win ХР pro на этом компе, тут нет его, дома на win7 проверю его существование

Kolyaj 14.02.2012 18:12

Цитата:

Сообщение от devote
У меня такая же версия, и JSON там всегда был и есть.

Не всегда, в зависимости от doctype и режима совместимости его может не быть.

devote 14.02.2012 18:13

Цитата:

Сообщение от poorking
у меня Win ХР pro на этом компе

Я тоже тестю на Win XP Pro, и всегда был и есть объект JSON, видимо что-то у вас отвалилось в ИЕ либо хз... Но в ИЕ8 он всегда был :)

devote 14.02.2012 18:15

Цитата:

Сообщение от Kolyaj
в зависимости от doctype

Ну это вряд ли, без доктайпа он есть, и с ними тоже... а вот насчет:
Цитата:

Сообщение от Kolyaj
режима совместимости его может не быть.

вполне возможно что кнопочку отжать забыли с режима совместимости под ИЕ7


Часовой пояс GMT +3, время: 18:19.