diff --git a/src/display/content_disposition.js b/src/display/content_disposition.js index af180181e4de4..0dec00c886d68 100644 --- a/src/display/content_disposition.js +++ b/src/display/content_disposition.js @@ -107,7 +107,11 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { function fixupEncoding(value) { if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { // Maybe multi-byte UTF-8. - return textdecode('utf-8', value); + value = textdecode('utf-8', value); + if (needsEncodingFixup) { + // Try iso-8859-1 encoding. + value = textdecode('iso-8859-1', value); + } } return value; } @@ -209,10 +213,10 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { return textdecode(charset, text); } // else encoding is b or B - base64 (RFC 2047 section 4.1) try { - return atob(text); + text = atob(text); } catch (e) { - return text; } + return textdecode(charset, text); }); }