从url加载带有中文文件名的pdf

时间:2016-01-18 19:05:25

标签: javascript url httprequest tomcat6

我有一个本地pdf,我尝试通过文件的路径在iframe中加载此pdf。

该文件的名称为明星.pdf,路径如下: http://localhost:8080/path-here/明星.pdf

当我尝试打开pdf文件时,浏览器执行此请求并失败(404): http://localhost:8080/path-here/%E6%98%8E%E6%98%9F.pdf

只有包含中文字符的pdf才会出现此问题。

有什么建议吗?

PS:我正在使用javascript。

编辑:

示例:

//there's a http:// in front, I can't put more links in post
var url = 'localhost:8080/path-here/teste.pdf' 
var url2 = 'localhost:8080/path-here/明星.pdf'

window.open(url,"_blank") //works fine
window.open(url2,"_blank") //fails

2 个答案:

答案 0 :(得分:1)

Javascript可以处理大多数非英文字符,但您可能需要对它们进行编码以便Web浏览器识别它们。尝试将网页(服务器?)的字符集指定为UTF-8

    <head>
    <meta charset="UTF-8">
    </head>

您可能还需要为webbrowser准备字符串,我建议使用 encodeURIcomponent() encodeURI()。这是对该功能的解释 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent。希望有所帮助!

答案 1 :(得分:0)

你可以这样做,使用

<a href="yourfilepath" download="your_chinesefilename.pdf",

示例:

<a id="dlink"  style="display:none;"></a>
<button onclick="downloadWagePdf()">
    pdfdownloadceshi 
</button>
<script type="text/javascript"> 

    function downloadWagePdf() {
        var pdfFilePath = "<%=basePath%>" + "WebRoot\\download\\" + "bank_wage" + ".xls";
        var titleDate= new Date().Format("yyyy-MM-dd hh-mm-ss");
        document.getElementById("dlink").href = pdfFilePath;
        document.getElementById("dlink").download = "银行流水表"+titleDate+".xls";
        document.getElementById("dlink").click();
    }

</script>

您可以查看this url,如何使用下载