JavaScript的。处理编码字符串中的奇数字符

时间:2010-06-18 19:31:00

标签: javascript encoding

我得到了一个值,编码如下:

%3Cp%3E%0AGlobal%20Business%20Intensive%20Course%20%u2013%

我注意到其中一个角色似乎最后以不同的方式编码,%u2013。它似乎是某种形式的unicode字符,但它导致我得到URI格式错误。有没有办法用标准编码字符替换这些?在这个例子中,似乎%u2013应该是一个连字符。

2 个答案:

答案 0 :(得分:2)

为了完整和正确,正则表达式还应接受AF的字母,因为%u2013指的是四位十六进制数字。你肯定应该在正则表达式中包含百分号,否则你最终会将Blu2000解释为Unicode转义序列,而不是。{/ p>

function fixUnicodeUrl(url) {
    var result = url.replace(/%u[0-9a-f]{4}/gi, function (match) {
        var codepoint = parseInt(match.substring(2), 16);
        var str = String.fromCharCode(codepoint);
        return encodeURIComponent(str);
    });
    return result;
}

var yourUrl = '%3Cp%3E%0AGlobal%20Business%20Intensive%20Course%20%u2013%';
alert(fixUnicodeUrl(yourUrl));

答案 1 :(得分:1)

确实是错误的。你从哪里得到它?

这是一种修复所有类型的畸形的方法。

var str = '%3Cp%3E%0AGlobal%20Business%20Intensive%20Course%20%u2013%';

str = str.replace( /u\d{4}/g, function( sequence )
{
  return encodeURIComponent( eval( '"\\' + sequence + '"' ) );
} );