为什么点击连接后不能打开服务器上含有中文的文件?

问题描述

为什么点击连接后不能打开服务器上含有中文的文件?

解决方案

解决方案二:
我采用的开发环境是:Apache6.0,URIencoding是gb2312MYSQL4.1,default-character-set=gb2312,default-character-set=gb2312在显示的页面的部分代码是:<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="com.citic.javabean.SearchFileResult"%><%@pagelanguage="java"import="com.citic.constant.*"%><%@pageimport="java.net.URLEncoder"%>......<tr><td><ahref="#"onmouseover="javascript:showFileInformation('<%=i%>');"onmouseout="javascript:hideFileInformation('<%=i%>');"onclick="window.open('<%=searchFileResult.getFilepath()%>')"><em><u><%=searchFileResult.getFilename()%></u></em></a></td></tr>这样点击连接后,浏览器的URL位置出现的是:http://localhost:8080/filesearch/doc/监管制度/2011/假币上缴清单.doc但页面却提示:typeStatusreportmessage/filesearch/doc/%E7%9B%91%E7%AE%A1%E5%88%B6%E5%BA%A6/2011/%E5%81%87%E5%B8%81%E4%B8%8A%E7%BC%B4%E6%B8%85%E5%8D%95.docdescriptionTherequestedresource(/filesearch/doc/%E7%9B%91%E7%AE%A1%E5%88%B6%E5%BA%A6/2011/%E5%81%87%E5%B8%81%E4%B8%8A%E7%BC%B4%E6%B8%85%E5%8D%95.doc)isnotavailable.请问这是为什么呢?我应该如何解决??谢谢.
解决方案三:
乱码问题吧.以下为复制过来的.让Tomcat支持中文路径名和中文文件名Tomcat是Java开发者使用得较多的一个Web服务器,因为它占用资源小,运行速度快等特点,深受JavaWeb程序员的喜爱。不过,在使用中,由于Java中的中文问题的存在,如果不经过配置,在WEB程序中,不能直接支持具有中文文件名的文件的下载,这为JavaWeb程序的开发带来一定的不便。本文拟介绍一种手段,解决这个问题。解决问题的核心在于修改Tomcat的配置,在Server.xml文件中添加一个名为URIEncoding的属性,它用于对HTTP请求中的get方法传过来的URL进行编码。如果直接从Apache站点中下载Tomcat,无论是安装版的exe文件,还是解压缩的ZIP文件,内置的对于get协议中的URL编码都是ISO-8859-1,这个字符集不能直接支持中文等双字节的信息,而中文文件的下载链接恰恰是通过get协议进行的。以下说明修改Tomcat安装目录中的config文件夹中的server.xml文件的方法。打开config/server.xml文件,如果没有修改过这个文件,应该可以在其中找到如下代码:<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"/>这段代码规定了Tomcat监听HTTP请求的端口号等信息,可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat不再以ISO-8859-1的编码处理get请求。更改后的代码如下所示(红色部分为新添加的代码):<Connectorport="8080"URIEncoding="utf-8"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"/>下面,我们准备测试一下更改后的效果。最为简单的测试方法就是让Tomcat自己列出WEB程序中的目录和文件,默认情况下,Tomcat不会直接列出WEB程序目录中的文件和文件夹,但是,我们可以修改位于安装目录中的config文件夹中的web.xml,使其能够支持自动列出WEB程序中的目录和文件。在config/web.xml文件中找到如下代码:<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet>将上面的代码中标为红色的部分改为如下内容:<init-param><param-name>listings</param-name><param-value>true</param-value></init-param>即将参数listings的属性改为true,就可让Tomcat自动列出某个WEB程序目录中的文件和文件夹。现在,我们的设置已经完成,将修改的文件保存后,就可以启动Tomcat进行测验了,当然,如果Tomcat正在运行,则需要重新启动,以便配置生效。现在,可以在Tomcat安装目录中的webapps目录中建立一个名为cntest的文件夹,作为测试的web程序的上下文路径(注意:对于WEB程序的上下文路径,请不要使用中文)。请在cntest中添加一些中文目录和文件,然后在浏览器中打开该WEB程序,如,http://localhost:8080/cntest,测验一下效果吧。当然,也可以在JSP或HTML文件中使用那些包含中文的文件夹或文件名的超级链接。说明:以上修改均使用Tomcat5.5做的测试,在5.5以上都应该可以,至于5.0和4.x,我没有实验过,不过对于5.0应该也是可以的,但4.x不能保证(4.x在处理HTTP的get和post方法和5.x不大一样)。
解决方案四:
楼上2位为正解
解决方案五:
我修改了server.xml的URIEncoding属性,可惜新的问题又出现了:<ahref="#"onclick="javascript:window.location='/<%=WebAppConstants.PROJECT_NAME%>/FrontControllerServlet?action=SearchFile&page=<%=currentPage-1%>&keyword=<%=URLEncoder.encode(searchKeyword)%>&searchMethod=<%=searchMethod%>&filecategory=<%=URLEncoder.encode(searchCategory)%>&fileid=<%=URLEncoder.encode(searchId)%>&filevest=<%=URLEncoder.encode(searchVest)%>&fileyear=<%=searchYear%>'"><fontcolor="black">上一页</font></a>我在连接中使用URLEncoder.encode(String),它默认以Apache的URIEncoding(修改后为UTF-8)来encode中文字符,但在我的FrontController中,我是使用了request.setCharacterEncoding为GB2312,这样就得到了???的乱码
解决方案六:
request.setCharacterEncoding为GB2312,全部用UTF-8规范编码吧
解决方案七:
你的页面设置成<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>使用UTF-8如果是Tomcat的话:<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"URIEncoding="utf-8"redirectPort="8443"/>已经测试通过
解决方案八:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><jsp:directive.pageimport="java.net.URLEncoder"/><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>MyJSP'index.jsp'startingpage</title><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"content="no-cache"><metahttp-equiv="expires"content="0"><metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="Thisismypage"><!--<linkrel="stylesheet"type="text/css"href="styles.css">--></head><body><ahref="中文路径/中文.doc">aaaaaaaaaaaaaa</a></body></html>

解决方案九:
我把目前的开发环境改为:1.MySQL的配置文件my.ini:default-character-set=gb2312[[mysql]]default-character-set=gb2312[mysqld]2.MySQL数据表(fileinfo,username)的编码:GB2312(CHARACTERSETgb2312COLLATEgb2312_chinese_ci)3.Apache的server.xml:URIEncoding="utf-8"<ConnectorURIEncoding="utf-8"connectionTimeout="20000"port="8080"protocol="HTTP/1.1"redirectPort="8443"/><ConnectorURIEncoding="utf-8"port="8009"protocol="AJP/1.3"redirectPort="8443"/>4.WebAppConstants.javaENCODING:GB2312JSP页面还是使用<%@pagecontentType="text/html;charset=GB2312"%>,不使用URLEncoder,而是使用javascript来提交表单(之前使用URLEncoder也是为了提交表单),这样的话我的应用就可以在地址栏访问到含有中文的服务器文件.另外如果把Apache的server.xml的URIEncoding改为gb2312的话,就不能在地址栏访问含有中文的服务器文件了,这个大家有什么建议呢?
解决方案十:
是不是说把所有的编码设置都改为utf-8,包括JSP页面,APACHE的server.xml的URIEncoding,MYSQL的my.ini都改为utf-8,这样就可以在地址栏上访问APACHE服务器上含有中文的文件??
解决方案十一:
还有一个问题,就是为什么在Apache中,它不支持URLEncoder.encode(String,"GB2312")这个方法的呢?它只能支持URLEncoder.encode(Str)??
解决方案十二:
恩,要编码一致

时间: 2024-08-28 11:06:44

为什么点击连接后不能打开服务器上含有中文的文件?的相关文章

请问如何在IE中直接打开服务器上指定路径的word文档

问题描述 asp.net2.0开发的一个网站,有一个查看文档按钮,点击此按钮,会自动下载网站根目录下的一个word文档,并且文档的内容在IE中直接打开,请问怎么实现吗?最好是有代码的 解决方案 解决方案二:在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于"ProgramFilesMicrosoftOfficeOFFICE11owssupp.dll".通过这个控件,客户端页面上的JavaScript就可以激活本地的Office软件,来实现打开.编辑O

打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 &amp;lt;serviceDebug&amp;gt; 配置行为)以便将异常信息发送回

在调试wcf程序的时候,有时会遇到下面的错误: System.ServiceModel.FaultException: 由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,或在打开每个 Microsoft .NET Framework 3.0 SDK 文档的跟踪的同时检查服务器跟踪

关于【对象“***.rem”已经断开连接或不在服务器上】异常的解决方法

     假设,Remoting服务端接受并保存了一个Remoting客户端注册的回调接口(比如ICallback),在一定的时刻,服务端会通过ICallback接口调用客户端的某些方法.当运行一段时间后,服务端再次回调ICallback时,就抛出了类似下面的异常:      对象"/9ca38d87_7f53_49b7_8c81_f2d499239f27/jqgpmhyy_rwcmicplf3j8s0j_1.rem"已经断开连接或不在服务器上.      原因在于回调接口指向的服务对

git push到 服务器后,在服务器上显示的是没有提交的状态

问题描述 git push到 服务器后,在服务器上显示的是没有提交的状态 如题: 我自己搭建了一个git服务器,仓库是现成的 clone到本地并且做了修改,commit后push 到了服务器 但是登陆到服务器后发现那些被修改的文件是处于没有提交的状态 求大神指教该如何解决 解决方案 在服务器上初始化git仓库时要使用git --bare选项 另外服务器上git仓库应该是不保存文件的 解决方案二: push到服务器的哪个分支了,是不是配置正确了 解决方案三: push成功了吗?项目旁有没有一个向上

vs2010winform窗口关闭后下次打开其上的控件如何保持原来的值?

问题描述 vs2010winform窗口关闭后下次打开其上的控件如何保持原来的值? 列如在一个窗体上有一个checkbox控件,选中后关闭窗体,再打开窗体后checkbox的选中状态没有了,请教如何才能让checkbox保持选中状态,即使关闭后下次打开还是保持上一次操作时的值 解决方案 在程序不退出的情况下可以使用静态变量: 假如程序退出后再次打开,需要将值保存起来,放到数据库,磁盘文件,注册表等地方 解决方案二: 写入到文件保存,下次读取出来填充 解决方案三: 关闭窗体之前,将checkbox

视频-Spring mvc 打开服务器上的视屏 但视屏不播放

问题描述 Spring mvc 打开服务器上的视屏 但视屏不播放 视屏文件的相对路径是upload/2.mp4 我用servlet在JSP页面上用标签在网页上是可以播放的, 但是在Spring mvc一样用JSP和在网页上却无法播放, 是不是Spring mvc要配置路径,如果是怎么配置? 解决方案 视屏监控系统视屏的简单播放 解决方案二: 解决了,果然是配置文件里路径没有配好,上传到服务器里的文件路径不在默认配置路径下面所以造成无法读取文件的问题,,大意了..

关于Window Server2008 服务器上无法播放音频文件和FLV视频文件_win服务器

在偌大的百度当中查找我所需要的资源信息,但网络上所描述的都不能解决,发生此类问题的人很多,但是都没有得到准确的解决方法!经个人各方面的尝试,其实非常简单的解决了无法播放音频文件的问题,如果各位今后也遇到此类问题,可按照我的方式处理: 若是3gp文件,在服务器IIS的MIME类型中直接添加扩展名为".3gp" MIME类型为"video/3gpp" 若是mp4文件,在服务器IIS的MIME类型中直接添加扩展名为".mp4" MIME类型为"

方法-.net B/S结构的程序 客户端如何播放服务器上的WAV音乐文件

问题描述 .net B/S结构的程序 客户端如何播放服务器上的WAV音乐文件 首先我的程序是B/S结构的服务器上有一个自动录音功能,文件路径如:D:/RecordFile/[2014-12-10]/82237883_13920701254_20141210141256.wav这个路径是存在数据库中的,可以直接取到数据.那请问现在我要在客户端的一个页面上播放这个服务器上的录音文件,代码该如何写?(客户端点击播放按钮可以直接听到wav文件的声音)还有客户端使用的浏览器是IE浏览器,因为是服务器的文件

VS2005怎样改变从源代码服务器上获取下来的文件的存放位置?

问题描述 VS2005怎样改变从源代码服务器上获取下来的文件的存放位置?重装系统后,从服务器上重新获取,代码文件存放的位置不是我原来在本地的存放位置我把我获取到的全删了重新获取可是已经没有了存放位置的选择,自动又存放到了刚才的位置请问该怎样解决?谢谢!源代码管理我用的是TeamExplorer 解决方案 解决方案二:在线等结贴解决方案三:vs没有,你的代码管理器有的,解决方案四:找了找不到不知道在哪里?解决方案五:获取单个文件可以指定位置吧?获取的时候,先只获取解决方案文件.然后在vs2005中