/**
* 根据浏览器的不同,下载文件名的中文的转换
* @param filename
* @return
*/
public String saveFileName(String filename){
HttpServletRequest request=(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
String agent = request.getHeader("user-agent");
StringTokenizer st = new StringTokenizer(agent,";");
st.nextToken();
String userAgent = st.nextToken();//得到用户的浏览器名
try {
String new_filename = new String(filename.getBytes("UTF-8"),"ISO8859-1");
// 如果没有UA,则默认使用IE的方式进行编码,因为毕竟IE还是占多数的
String rtn = new_filename;
if (userAgent != null)
{
userAgent = userAgent.toLowerCase();
// IE浏览器,只能采用URLEncoder编码
if (userAgent.indexOf("msie") != -1)
{
rtn = URLEncoder.encode(filename, "UTF8");
}
// Opera浏览器只能采用filename*
else if (userAgent.indexOf("opera") != -1)
{
rtn = "*=UTF-8''" + URLEncoder.encode(filename, "UTF8");
}
// Safari浏览器,只能采用ISO编码的中文输出
else if (userAgent.indexOf("safari") != -1 )
{
rtn = new String(filename.getBytes("UTF-8"),"ISO8859-1");
}
// Chrome浏览器,只能采用MimeUtility编码或ISO编码的中文输出
else if (userAgent.indexOf("applewebkit") != -1 )
{
new_filename = MimeUtility.encodeText(filename, "UTF8", "B");
rtn = new_filename ;
}
// FireFox浏览器,可以使用MimeUtility或filename*或ISO编码的中文输出
else if (userAgent.indexOf("mozilla") != -1)
{
rtn = new String(filename.getBytes("UTF-8"),"ISO8859-1");
}
return rtn;
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
分享到:
相关推荐
这是解决中文名乱码的关键步骤之一。 #### 设置响应长度 ```csharp Response.AddHeader("Content-Length", buffer.Length.ToString()); ``` - **`Content-Length`**: 指明响应体的大小,单位是字节。这有助于...
### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的...
软件名称:整站下载器(Teleport Ultra)下载器之文件乱码修复助手 环境依赖:.Net FrameWork 4.0 使用说明:将软件复制到需要修复文件名的目录下双击打开根据提示操作即可 * 特别注意:不可对同一文件重复执行,...
### Tomcat 在IE中下载rar文件为乱码解决方案 #### 问题背景 在使用Tomcat作为Web服务器的应用程序中,可能会遇到一个常见的问题:当用户尝试通过Internet Explorer(IE)浏览器下载rar格式的文件时,文件会被误...
文件下载时 response.setHeader() 下载中文文件名乱码问题可以通过使用 email 附件名编码方法对文件名进行编码来解决。同时,需要正确设置 Content-Type 和 Content-Disposition 头字段来确保文件下载正确。
这段代码创建了一个`ifstream`对象,尝试打开名为"example.txt"的文件,然后逐行读取内容并打印到控制台。如果文件未能成功打开,程序会输出错误信息。 接下来,我们讨论如何写入TXT文件。同样,可以使用`ofstream`...
解决中文名乱码问题的关键在于确保数据传输的全过程都使用相同的字符编码,包括客户端的发送、服务器的接收以及响应。在Flex端,可以使用`flash.net.URLRequestHeader`设置请求头的`charset`属性,而在服务器端,如...
多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在...
"windows xp 乱码解决文件"这个主题主要涉及到字体文件的管理和使用,以改善系统的文本渲染能力,特别是针对那些不兼容系统默认字体的应用程序。 首先,我们需要理解“font”标签的含义。在计算机领域,字体是决定...
### Java导出Excel文件并下载到客户端(含解决中文乱码问题) 在现代的企业级应用开发中,数据导出功能是非常常见的一种需求。特别是在B/S架构的应用中,用户经常需要将查询结果导出为Excel文件以便进行后续的数据...
// 获取文件的名字 if (Request.UserAgent.Contains("MSIE") || Request.UserAgent.Contains("msie")) { // 如果客户端使用 Microsoft Internet Explorer,则需要编码 fileName = ToHexString(fileName); // ...
这段代码利用Apache Commons CSV库解析文件,同时支持了文件头作为字段名。 总结来说,处理包含中文字符的CSV文件,关键在于正确设置文件的编码,选择合适的读取方式,并确保与文件的实际编码匹配。此外,合理利用...
解决Jmeter5.5、Jmeter5.5、Jmeter5.5上传文件中文乱码问题和录制脚本中文乱码问题,其他版本请勿使用! 使用时替换原本的lib\ext目录下的ApacheJMeter_http.jar文件并重启,上传文件时,需要勾选“对POST使用...
然而,当涉及到包含中文字符的文件或目录时,可能会遇到乱码问题。这个问题主要源于字符编码的不一致,通常需要正确设置字符集来确保中文字符在压缩和解压过程中能正确保存和读取。 首先,我们要理解ZIP格式本身并...
在处理压缩文件,如ZIP或RAR格式时,中文文件名可能会出现乱码问题,这通常是由于编码不兼容或缺少正确设置编码导致的。中文字符在不同的操作系统或软件中可能使用不同的编码方式,如GBK、UTF-8等,不匹配就会产生...
### 解决不同浏览器下载时中文名乱码问题 在Web开发过程中,经常遇到的一个问题是当用户尝试下载包含中文字符的文件名时,会出现乱码的情况。这是因为不同的浏览器处理文件名编码的方式有所不同,导致服务器端设置...
当在Ubuntu系统中解压Windows生成的zip文件时,不仅文件内容可能出现乱码,文件名和目录名也可能因为编码不兼容而乱码。convmv是一个可以转换文件名编码的工具,使用convmv可以将文件名和目录名从GBK转换为UTF-8。...
PC版的喜马拉雅客户端下载的m4a文件,名称是一串数字,真实名称被保存到一个list.json,通过解析该文件,实现批量重命名下载的视听文件。 该脚本的主要功能是:把下载的文件重命名为“真实名称.mp3” 使用方法: 1.将...
在提供的压缩包文件" AxureTool "中,包含了一个名为"chm.bat"的批处理文件,它是调用Python脚本的接口。用户只需运行这个bat文件,就可以自动完成对.chm文件的修复,避免了手动修改的麻烦。当然,为了适应不同用户...
然而,在处理包含中文字符的文件时,adb可能会出现乱码问题,尤其是在Windows系统上,由于Windows默认采用GBK编码,而Android系统通常使用UTF-8编码,这种编码不匹配就会导致中文乱码。 标题提到的"解决adb传输中文...