Struts会用文件上传组件帮我们获取文件名称。。并付给相应的Action中的属性。。我使用 String uploadFileName; 这个属性来获取上传的文件名。我上传的文件名称是 "泛型.txt"
上传后结果显示文件名称出现乱码。。 (这里我想在服务器也以“泛型.txt”这个名称来保存文件在磁盘上)
然后我直接把 uploadFileName 打印在后台上。System.out.println(uploadFileName); 输出 ????.txtSystem.out.println(uploadFileName.getBytes("UTF-8").length); 输出 16 System.out.println("????.txt".getBytes("UTF-8").length); 输出 8 做到这里 我无语了。。难道说 其中 对文件名 进行 URL 编码了??我想知道我如何才能正确的获得上传的文件名。。还有这个文件名 从 浏览器 到 服务器 倒地都经过了怎样的转换。。???请高手赐教
上传后结果显示文件名称出现乱码。。 (这里我想在服务器也以“泛型.txt”这个名称来保存文件在磁盘上)
然后我直接把 uploadFileName 打印在后台上。System.out.println(uploadFileName); 输出 ????.txtSystem.out.println(uploadFileName.getBytes("UTF-8").length); 输出 16 System.out.println("????.txt".getBytes("UTF-8").length); 输出 8 做到这里 我无语了。。难道说 其中 对文件名 进行 URL 编码了??我想知道我如何才能正确的获得上传的文件名。。还有这个文件名 从 浏览器 到 服务器 倒地都经过了怎样的转换。。???请高手赐教
需要多方面做调节的以下可以参考
1、给服务器做编码
2、直接给URL做编码
3、给Action的拦截器或者说是listener做编码
。诸多方案均可以实现
不过前提是你要以相同的编码完成
不能你的数据库使用GBK,你的页面用UTF-8,而Struts用的是ANSI
要保持一致才比较好其他的你可以自行处理的
祝你成功