vertx Java下载文件名特殊字符

时间:2017-03-16 07:16:15

标签: java encoding vert.x downloading

我正在用Java和vertx编写一个简单的文件下载,我无法获得正确的文件名,例如:gadžezèleno_iscusinţă.pdf(这是罗马尼亚语)

这是我的代码:

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

有没有人知道以正确的格式制作此名称的方法?请帮忙......

1 个答案:

答案 0 :(得分: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();