Java 通过http头编码向文件名添加撇号
我想在文件名中添加一个撇号。该文件在我的Java服务器上生成,并通过基于Faces的HTTPServletResponse对象发回。在下面的代码中,文件名最终为“french_filename.txt”。对撇号进行编码以确保文件名正确向下发送的正确方法是什么Java 通过http头编码向文件名添加撇号,java,servlets,Java,Servlets,我想在文件名中添加一个撇号。该文件在我的Java服务器上生成,并通过基于Faces的HTTPServletResponse对象发回。在下面的代码中,文件名最终为“french_filename.txt”。对撇号进行编码以确保文件名正确向下发送的正确方法是什么 HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse(); response.reset();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.reset();
response.setContentType("application/txt");
response.setHeader("Content-disposition", "attachment; filename=\"french'filename.txt\"");
由于撇号是一个符号,您可能需要对其进行编码。尝试使用URLEncoder对所有文件名进行编码:
URLEncoder.encode("french'filename.txt", "UTF-8"));
它将返回:
french%27filename.txt
如果需要,您可以选择不同的编码。要同时在IE和Chrome中工作,我发现“french”文件效果最好 有趣-这在IE中有效,但Chrome将其保留为%27。这是我第一次看到IE比Chrome工作得更好!