Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过http头编码向文件名添加撇号_Java_Servlets - Fatal编程技术网

Java 通过http头编码向文件名添加撇号

Java 通过http头编码向文件名添加撇号,java,servlets,Java,Servlets,我想在文件名中添加一个撇号。该文件在我的Java服务器上生成,并通过基于Faces的HTTPServletResponse对象发回。在下面的代码中,文件名最终为“french_filename.txt”。对撇号进行编码以确保文件名正确向下发送的正确方法是什么 HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse(); response.reset();

我想在文件名中添加一个撇号。该文件在我的Java服务器上生成,并通过基于Faces的HTTPServletResponse对象发回。在下面的代码中,文件名最终为“french_filename.txt”。对撇号进行编码以确保文件名正确向下发送的正确方法是什么

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工作得更好!