为什么在我的javascript变量中为空格添加%20

时间:2010-10-12 18:08:38

标签: javascript jquery

function openFile(file, object) {
    var extension = file.substr( (file.lastIndexOf('.') +1) );

    var fileName = file.substr((file.lastIndexOf('/') +1), (file.length - (file.lastIndexOf('/') +1))-4);


    object.append('<img class="theimage" src="" alt="icon"/>');
    object.append('<span class="thefile"></span>');


    switch(extension) {

        case 'ppt':
            object.find('img').attr('src', 'PowerPoint-icon.png');
        break;
        case 'pdf':
            object.find('img').attr('src', 'pdficon_large.gif'); 
        break;
        case 'txt':
            object.find('img').attr('src', 'txt_icon.png'); 
        break;
        default:
            alert('error');
    }

    object.find('span.thefile').text(fileName);

};

此函数可以自行运行,但是当我将它添加到学校的cms模板时,它会将%20添加到fileName中的所有空格。

你认为他们有自己的功能吗?会是什么目的?为安全起见?

1 个答案:

答案 0 :(得分:2)

%20是空格的标准URL编码。处理空间的任何函数都认为需要对它们进行编码以便在URL中使用。

至于为什么要这样做,它并不完全是为了安全。并非所有系统都处理好空间;这在这些情况下有所帮助,因此对URL编码空间(以及其他内容)被认为是“更安全”。有关所有其他信息,请参阅RFC 3986 s2.1s2.4