Cookies 中 Unicode 编码中文解码方法 - JavaScript 实现
Cookies 中 Unicode 编码中文解码方法 - JavaScript 实现
以下是一段 cookies 数据:
[
{
'domain': 'cc.vip.cc',
'expirationDate': 1679884376.719851,
'hostOnly': true,
'httpOnly': false,
'name': 'd821bd278cf1ec86863eee7d242f4f6a__typecho_notice',
'path': '/',
'sameSite': 'unspecified',
'secure': false,
'session': false,
'storeId': '0',
'value': '%5B%22%5Cu7528%5Cu6237%5Cu540d%5Cu6216%5Cu5bc6%5Cu7801%5Cu65e0%5Cu6548%22%5D',
'id': 1
},
{
'domain': 'cc.vip.cc',
'expirationDate': 1679884376.719888,
'hostOnly': true,
'httpOnly': false,
'name': 'd821bd278cf1ec86863eee7d242f4f6a__typecho_notice_type',
'path': '/',
'sameSite': 'unspecified',
'secure': false,
'session': false,
'storeId': '0',
'value': 'error',
'id': 2
}
]
这段代码中,value 字段存储了中文信息,但由于被转义成了 Unicode 编码,导致输出结果不是我们期望的中文。
var prefix = 'd821bd278cf1ec86863eee7d242f4f6a,
cookies = {
notice : $.cookie(prefix + '__typecho_notice'),
noticeType : $.cookie(prefix + '__typecho_notice_type')
};
if (!!cookies.notice && 'success|notice|error'.indexOf(cookies.noticeType) >= 0) {
var noticeStr = decodeURIComponent(cookies.notice);
notimsg = noticeStr.replace(/[[]']g, '');
layer.msg(notimsg, function(){});
console.log(notimsg)
}
为了解决这个问题,我们可以使用以下 JavaScript 函数进行 Unicode 解码:
function decodeUnicode(str) {
str = str.replace(/\\/g, '%');
return unescape(str);
}
将输出的中文字符传入该函数即可转换为正常中文。
使用方法:
- 获取到 cookies 中的 Unicode 编码字符串;
- 使用
decodeUnicode()函数对字符串进行解码; - 将解码后的字符串输出或使用。
示例:
var unicodeStr = '%5B%22%5Cu7528%5Cu6237%5Cu540d%5Cu6216%5Cu5bc6%5Cu7801%5Cu65e0%5Cu6548%22%5D';
var decodedStr = decodeUnicode(unicodeStr);
console.log(decodedStr); // 输出: ['用户名或密码无效']
通过以上方法,我们就可以成功地将 cookies 中的 Unicode 编码中文解码为正常显示的中文。
原文地址: https://www.cveoy.top/t/topic/lQ31 著作权归作者所有。请勿转载和采集!