2017-03-16 56 views
0

我寫Java和vertx一個簡單的文件下載,我不能得到正確的文件名,爲前:gadžezèleno_iscusinţă.pdf(這是羅馬尼亞語)vertx的Java下載文件名,特殊字符

這裏是我的代碼:

ctx.response() 
     .putHeader(HttpHeaders.CONTENT_TYPE, contenype) 
     .putHeader("Content-Disposition", String.format(inline; filename="gadže zèleno_iscusinţă.pdf") 
     .putHeader(HttpHeaders.TRANSFER_ENCODING, "chunked") 
     .sendFile(filePath).end(); 

有了這個代碼,使得下載的文件名有錯誤的格式:

gad-e zèleno_iscusin--.pdf 

我試着使用URLEncoder.encode(),結束代碼的文件名:

.putHeader("Content-Disposition", String.format(inline; filename=URLEncoder.encode("gadže zèleno_iscusinţă.pdf")) 

但它使所有的空間變成「+」,這是不好的:(。 gadže+zèleno_iscusinţă.pdf

有沒有人知道任何方法,使正確的格式這個名字?請幫助...

回答

0

我做到了....使用UTF-8和ISO-8859-1。代碼會是這樣的。

String fileName = "gadže zèleno_iscusinţă.pdf"; 

String encodeFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); 

ctx.response() 
     .putHeader(HttpHeaders.CONTENT_TYPE, contenype) 
     .putHeader("Content-Disposition", encodeFileName) 
     .putHeader(HttpHeaders.TRANSFER_ENCODING, "chunked") 
     .sendFile(filePath).end();