这是我在导出excel文件供用户下载时遇到的:
流程:
1、文件生成,文件全名名由路径加文件名构成,路径配置在数据库中动态读取,名称由时间加汉字构成。生成
2、前台页面显示出文件列表,点击下载,将文件名传到后台去,后台通过读取数据库配置的路径加上传过来的
3、从指定文件中读取数据,设置相关信息,完成下载
中文乱码处理:
1、生成文件系统的实体文件时,文件名不存放汉字,而是将文件名(不用包括路径)转成Unicode
2、前台显示文件名列表,将要下载的文件名传到后台去。传之前要通过js进行加密操作,同样转换成unicode字
3、当然文件下载时用户看到的下载列表中你不能直接给Unicode码组成的文件名也不能是乱码,但是幸好,程序会自动处理这一点,你直接response.setHeader("Content-Disposition","attachment;filename="+fileName)就行,其中的fileName是Unicode码的文件名,浏览器会自动给你转换好的!
中文乱码问题太多了,而且很烦,一个很好的原则就是,不要讲中文名称存放到服务器上,而是用通用的字符代替,你如这里讲的Unicode字符,或者还有一种办法,通过自己定义一种规则,将中文映射成英文存放到服务器上,然后下载的时候再将英文映射成对应的中问,这个过程可以借助Map来做,这样也能很好的防止乱码问题!