JSON.stringify в IE8
Имеем следующий незамысловатый кусок кода:
JSON.stringify({Test: "Тест1"}) Запускаем в разных браузерах - имеем: Chrome, FF, IE9 (в т.ч в режиме совместимости c IE8) - "{"Test":"Тест1"}" в IE8 - "{"Test":"\u0422\u0435\u0441\u04421"}" Собственно, вопрос, почему IE8 ведет себя иначе и можно ли его образумить? |
Это вы увидели в console.log ?
alert("\u0422\u0435\u0441\u04421"); Это просто в юникоде закодированный текст, это то то же самое, просто там такая консоль, показывает как есть видимо alert("\u0422\u0435\u0441\u04421" === "Тест1") |
poorking,
Вы не совсем правы, попробуйте запустить в ИЕ8 вот это: alert( JSON.stringify({Test: "Тест1"}).replace(/\\/g, '_') ); В во всех браузерах вы увидите: {"Test":"Тест1"} а в ИЕ8 вы увидите: {"Test":"_u0422_u0435_u0441_u04421"} |
Подождите подождите, в моем IE8 нет объекта JSON (Почему у вас всех есть?). А если ТС использует библиотеку, восстанавливающую объекс, то это она виновата
Версия: 8.0.6001.18702 |
А образумить его можно так:
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,
Как вы думаете, почему у меня его нет? Я использую библиотеку, потому что он реально нужен, но его не было тогда и нет сейчас. Попробую переустановить IE чтоли, у меня Win ХР pro на этом компе, тут нет его, дома на win7 проверю его существование |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 04:48. |