javascript。处理编码字符串中的奇数字符
我得到了一个值,编码如下:javascript。处理编码字符串中的奇数字符,javascript,encoding,Javascript,Encoding,我得到了一个值,编码如下: %3Cp%3E%0AGlobal%20Business%20Intensive%20Course%20%u2013% 我注意到其中一个字符的结尾似乎以不同的方式编码,即%u2013。它似乎是某种形式的unicode字符,但它导致我得到URI格式错误。有没有办法用标准编码字符替换这些字符?在本例中,似乎%u2013应该是连字符。这肯定是格式错误的。你从哪里得到的 这里有一种方法可以修复所有发生的这种畸形 var str = '%3Cp%3E%0AGlobal%20Bu
%3Cp%3E%0AGlobal%20Business%20Intensive%20Course%20%u2013%
我注意到其中一个字符的结尾似乎以不同的方式编码,即%u2013。它似乎是某种形式的unicode字符,但它导致我得到URI格式错误。有没有办法用标准编码字符替换这些字符?在本例中,似乎%u2013应该是连字符。这肯定是格式错误的。你从哪里得到的
这里有一种方法可以修复所有发生的这种畸形
var str = '%3Cp%3E%0AGlobal%20Business%20Intensive%20Course%20%u2013%';
str = str.replace( /u\d{4}/g, function( sequence )
{
return encodeURIComponent( eval( '"\\' + sequence + '"' ) );
} );
为了更加完整和正确,正则表达式还应该接受从
A
到F
的字母,因为%u2013
表示四位十六进制数。你应该在正则表达式中包含百分号,否则你最终会把Blu2000
解释为一个Unicode转义序列,事实并非如此
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));
实际上,这是一个破折号:下面的答案更灵活、更有用。这个答案有误报和意外替换的危险。