簡體   English   中英

在IE9 localStorage中存儲某些Unicode字符會引發無效的參數錯誤

[英]Storing Certain Unicode Characters in IE9 localStorage Throws Invalid Argument Error

我在應用程序中使用localStorage。

我正在使用XOR bitshift操作在數據進入存儲之前屏蔽數據。

這是掩蔽功能:

    encrypt: function (str) {
        var encoded = [];

        if (!App.crypto.key) {
            App.crypto.init();
        }

        for (var i = 0, len = str.length; i < len; i++) {
            var a = str.charCodeAt(i);
            var b = a ^ App.crypto.key.charCodeAt(App.crypto.key % i);
            encoded.push(String.fromCharCode(b));
        }

        return encoded.join("");
    }

我在這種情況下使用的密鑰的值是“MWZ2cyt2N3JwejhxUjA2V3ptRmwxcmVvU09IbFhORHdOcDRiWGh5SGRZMFU4Ym9VY1Y1WXU5c2d6OXhBdU9wTSt1MlpqcmhXOVBRPQ0K”

當我在IE9中屏蔽“[]”時,我會得到一些怪人角色。 當我嘗試將其設置為localStorage時,它會給我一個無效的參數錯誤。 有人知道發生了什么嗎?

IE(和Edge,還沒有重寫)將localStorage存儲為XML,並禁止任何與XML 1.0中的Char生成不匹配的字符 ; 即,您可以存儲“任何Unicode字符,不包括代理塊,FFFE和FFFF”。

根據規范,這是一個錯誤:對於可以存儲在localStorage中的內容應該沒有限制(任何ECMAScript字符串都應該是可能的),盡管這個錯誤自IE8以來就已存在。 (在IE8預覽中,可能通過存儲一個不允許的字符來破壞localStorage后備存儲,就像它試圖解析XML文件時一樣,它有一個解析錯誤!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM