ucs2 <=> utf8

之前日志里的的 xss,csrf 有利用ucs-2进行安全攻击的说明。
有时候需要对其进行utf-8的转换。

Ps: gbk编码转unicode需要查表

一般会有流程

gbk => unicode(ucs-2) => utf-8

pass gbk流程

ucs-2utf-8 可以如下实现:

function toUtf8(code) {
    var iByte = 0;
    var i = 0;
    result = "";
    while (code > 0x7f) {
        iByte = code % 0x40;
        code = (code - iByte) / 0x40;
        result = "%" + (iByte | 0x80).toString(16).toUpperCase() + result;
        i++;
    }
    prefix = [0x0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc];
    if (i > prefix.length) {
        i = 5;
    }
    result = "" + (code | prefix[i]).toString(16).toUpperCase() + result;
    return result;
}

获取unicode则可以如

'adea'.charCodeAt(index).toString(16)

或是

escape('汉')

Ps: escape将被 deprecated