当我从一个西里尔语网站获取JSON数据时,数据以\ufffd格式而不是西里尔语字符的形式呈现。
(例如数据源:http://jsonduit.com/v1/f/l/7sg?cb=getJsonP_1284131679846_0)
所以当我将此数据源作为输入时,会显示奇怪的方框而不是字符。我尝试对输入进行反转义,但仍然无法正常显示。
如何将该数据源恢复回西里尔语?
(顺便提一下,数据源页面编码设置为UTF-8)
当我从一个西里尔语网站获取JSON数据时,数据以\ufffd格式而不是西里尔语字符的形式呈现。
(例如数据源:http://jsonduit.com/v1/f/l/7sg?cb=getJsonP_1284131679846_0)
所以当我将此数据源作为输入时,会显示奇怪的方框而不是字符。我尝试对输入进行反转义,但仍然无法正常显示。
如何将该数据源恢复回西里尔语?
(顺便提一下,数据源页面编码设置为UTF-8)
decodeURIComponent("stringToDecodeToCyrillic")
示例: decodeURIComponent("%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9") === "Алексей"
看起来你收到了UTF8字符串。使用以下类来解码:
UTF8 = {
encode: function(s){
for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
);
return s.join("");
},
decode: function(s){
for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
((a = s[i][c](0)) & 0x80) &&
(s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
);
return s.join("");
}
};
使用方法:
var newString = UTF8.decode( yourString );
unescape(encodeURIComponent(unicodecharacters))
е’ҢdecodeURIComponent(escape(utf8bytes))
жқҘеңЁUnicodeеӯ—з¬ҰдёІе’ҢUTF-8зј–з ҒеҚ•е…ғд№Ӣй—ҙиҝӣиЎҢиҪ¬жҚўпјҢж— йңҖжүӢеҠЁзј–еҶҷгҖӮ - bobince