我用jsp编写的一个小程序,主要是想对硬盘上文件及文件夹的浏览,并有改名和删除两个功能。但遇到了编码问题,就是在反问遇到中文名字的文件或者文件夹就不能正确显示,并且不能进入已经是乱码的文件夹。我所用的技术主要是Java中的File类。遍历方法是递归。我把源码附上,请教各位高手。谢谢了
又看了一下你的代码~~~呵呵~~~加油啊~~~
对于你要解决的“编码问题”可以通过以下两种方式解决:
1: 为你的程序添加一个 Filter. 然后再 Filter 中进行编码转换,很简单的功能。在 Filter 中的代码:
request.setCharacterEncoding("UTF-8");
fChain.doFilter(request, response);
你要是没有接触过过滤器就找一下资料~~使用很简单。
2: 在你的 newFolder.jsp 中获取“要创建的文件夹的名称时” 要这样获取:
String folderName = new String(request.getParameter("folderName").getBytes("ISO-8859-1"),"UTF-8");
String newFolderName = new String(request.getParameter("newFolderName").getBytes("ISO-8859-1"),"UTF-8");
以上你编码问题。
但是你在删除文件 jsp 页面中不仅仅存在编码问题。你的 JSP 是不正确的。
最直观的就是 方法的声明应该放在 <%! %> 中,而不是 <% %> 中。在看一下 JSP 的脚本语言是如何使用的吧!
显示应该不会有问题的,只是如果访问中文文件件将会出现问题。
有两个解决方案:
1:如果你使用的是 Tomcat 服务器,那么修改 Tomcat 的 server.xml . 在 port=8080 的那个 <Connector 中添加 URIEncoding="UTF-8" ,然后重新启动 Tomcat 。这样设置后,你每次 request.getParameter 时不在需要进行转码操作,即你在 FileDetail.jsp 中获取用户选择的文件夹的名称时的代码为:request.getParameter("directoryName")
2:如果不修改 Tomcat 设置,那么你在 FileDetail.jsp 中获取用户选择的文件夹的名称时的代码为:new String(request.getParameter("directoryName").getBytes("ISO-8859-1"),"utf-8")