0

%u2014在互联网的狂野西部找到了(实际上是关于烂番茄的评论)。我记得在javascript中看到过类似的东西。我不记得它是否在字符串中,但我认为它是某种转义或 uri 转义。

我尝试decodeURIComponent('%u2014')在控制台中运行并得到URIError: malformed URI sequence. 有谁知道如何解码这个字符?出于某种原因\x,我想到了,但我不知道为什么。

如何解码这个 unicode 字符?

4

2 回答 2

1

该格式%uNNNN来自 JavaScript 函数escape()- 它看起来有点像 URL 编码,但它不是,它是一种自定义(无意义)JS 特定的编码类型。

如果您从 JavaScript 代码处理它,那么明显的解药是unescape().

于 2013-04-26T14:31:32.010 回答
1

为此,您可以对这种模式使用 RegExp 并从它的匹配项中进行字符解码。不过,Afaik%uXXXX格式不是推荐的做法。

var decodeUE = (function () {
    var reg = /%u([\dA-F]{4})|%([\dA-F]{2})/ig,
        helper = function (m, a, b) {
            if (a) return String.fromCharCode(parseInt(a, 16));
            if (b) return String.fromCharCode(parseInt(b, 16));
        };
    return function decodeUE(s) {
        return s.replace(reg, helper);
    };
}());

var enc = '%u2014 %33 %AF %u1A2B';

decodeUE(enc); // "— 3 ¯ ᨫ"
于 2013-04-24T23:34:22.530 回答