我得到了一个值,编码如下:
%3Cp%3E%0AGlobal%20Business%20Intensive%20Course%20%u2013%
我注意到其中一个角色似乎最后以不同的方式编码,%u2013。它似乎是某种形式的unicode字符,但它导致我得到URI格式错误。有没有办法用标准编码字符替换这些?在这个例子中,似乎%u2013应该是一个连字符。
答案 0 :(得分:2)
为了完整和正确,正则表达式还应接受A
到F
的字母,因为%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 + '"' ) );
} );