关于java上传文件到服务器文件名录乱码 关于java上传文件到服务器文件名录乱码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 response.addHeader("Content-Disposition","attachment; filename=\""+ new String(("端口资源情况统计报表").getBytes(),"iso8859-1")+ "\""); 这样写在本地可以正常显示中文文件名,但在linux服务器上却不能正常显示。其实在windows下面当getBytes()方法里面不写编码方式的时候默认应该是"UTF-8", 改为response.addHeader("Content-Disposition","attachment; filename=\""+ new String(("端口资源情况统计报表").getBytes("GB2312"),"iso8859-1")+ "\"") 时,本地和linux服务器上都能正常显示下载文件的文件名了。注意:在把文件名发送给服务器的时候一定不能是中文,所以要把中文转成iso8859-1或其他非中文的形式。或者是 在上传前进行 文件名装 ASCII码 在服务器在用 ASCII码装中文 如果你的服务器是tomcat,可以在server.xml文件中修改<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>改为<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/> java里面的乱码问题还是挺好解决的你慢慢试呗,总共就哪几种编码,试也可以试出来的。 过滤器啊过滤器怎么碰到编码问题就用字符串转码呢。<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1; request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); arg2.doFilter(arg0, arg1); }就这么几句超简单的代码就可以搞定的问题干嘛要搞得那么复杂 这个中文文件名乱码的问题很多项目都会遇到,一般采取的方法就是绕道而行,获取前缀转换成其他的名字,避免使用中文,web程序对中文支持不是很好。建议采用英文名,或者采用转换成特殊定义的名字 加入struts2的过虑器之后ajax的servlect服务器程调用不起来 javaweb做了一个网站,怎么上传到域名空间? java二进制数据存储问题 关于jsp(或html)表单数据提交到后台java类 java 点击下载按钮如何弹出文件下载对话框? 对象池化的奇怪问题 一个很奇怪的sql查询语句 【急】代友发贴:寻高手做一网站(Java架构)[北京] 关于乘法表 JSP在WIN2000下的配置 在测试servlet的时候必须要用doGet()和doPost()吗? HTML代码转化为JSP代码的问题。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1; request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding); arg2.doFilter(arg0, arg1);
}
就这么几句超简单的代码就可以搞定的问题干嘛要搞得那么复杂