简体   繁体   中英

Why is it adding %20 to the spaces in my javascript variables

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);

};

This function runs properly on it's own but when I add it to my school's cms template it add %20 to all the spaces in fileName.

Do you think they have their own function that is doing this? What would be the purpose? For security?

%20 is standard URL encoding for spaces. Whatever function is processing the spaces thinks they need to be encoded for use in a URL.

As to why it is done, it is not exactly for security. Not all systems handle spaces well; this helps in those cases, so it is considered 'safer' to URL encode spaces (among other things). For all other information see RFC 3986 s2.1 and s2.4

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM