一,图片改为英文名
二,对图片的路径名进行处理,假设图片路径名为String imgRoot=new String(imgRoot.getBytes("ISO-8859-1"),"GB2312") 或者 url =java.net.URLEncoder.encode(imgpath,"UTF-8");
你可能还不知道jsp在在传递中文时候会出现乱码 所以说你的图片路径在传递后的路径系统识别不出来了
所以你要么改成英文的,要么解决中文乱码的问题 怎么解决呢?
这有篇文章,你看看,我试过,可以成功 关于JSP中文乱码 JSP文件中乱码现象经常遇到,那如何处理就是我们不可避免的话题,那么该如何解决呢,
下面我针对不同的情况,给出几种处理方式:
1) JSP页面中文乱码,这种情况比较好处理,在页面的page指令中加上如下一项就行
2) JSP页面采用表单提交时,提交的数据中包含中文,并且提交方式为post这时我们获取表单数据后,展示到其它页面时会出现乱码,解决方案是在获取请求中的参数前,先设置请求的字符集。如下代码: request.setCharacterEncoding(“UTF-8”) ;
3) 还是表单提交数据,但是提交方式为默认的get方式,这时即使我们设置了请求字符集,但取出来还是乱码,这时需要如下的转换方式,我把转换方式用一个编码转换类来实现了。
/* * 定义一个转换字符集的工具类CharSetTool * * 定义一个方法,用来转换 */
public class CharSetTool {
/* * 方法toUTF8() * 参数: @inStr 传入要转换的字符串 */
public static String toUTF8(String inStr) {
String rtStr="";
if(inStr!=null) {
try {
rtStr=new String(inStr.getBytes("ISO-8859-1"),"UTF-8"); }
catch (UnsupportedEncodingException e) {
//打印错误信息 System.out.println(e.getMessage());
}
} return rtStr;
}
}
4) URL中文参数乱码处理, 比如:超链接方式 <a href="next?str=">我是链接,单击可以提交参数
注:next 为 Servlet的URL Pattern 那在将中文作为参数值传递时,首先要把中文字符串进行编码转换,转换成URL格式
操作如下: <a href="next?str=">我是链接,单击可以提交参数 综合以上几种比较常见的JSP中文乱码的处理方式,不管是何种提交方式,我们都可以使用JSP中的过滤器(Filter)来过滤字符编码,下面我就给出一个我自己定义的 “通用”的字集编码过滤器。
/** * 处理中文字符集的过滤器 * * @author Administrator * */
public class EncodingFilter implements Filter {
//过滤器销毁的方法 public void destroy() {
} public void doFilter(ServletRequest request, ServletResponse response,FilterChain chan) throws IOException, ServletException {
//设置响应模式 response.setContentType("text/html;charset=UTF-8");
//判断客户端的提交方式
if(((HttpServletRequest)request).getMethod().equalsIgnoreCase("POST")) {
//POST方式提交
//设置请求字符集 request.setCharacterEncoding("UTF-8");
} else {
//处理GET //获取所有的提交参数
Enumeration names = request.getParameterNames(); //遍历
while(names.hasMoreElements()) { //参数名
String name = (String)names.nextElement(); //因为不知道参数是多值还是单值
String values[] = request.getParameterValues(name); //循环处理字符集转换
for(int i=0;i<values.length;i++) {
values[i] = toUTF8(values[i]); }
}
} //调用过滤器链中的下一个过滤器
chan.doFilter(request, response);
} //转换方法(内部私有方法)
private String toUTF8(String str) {
String rt = null; try { if(str!=null) {
//转换新字符集 rt = new String(str.getBytes("ISO-8859-1"),"UTF-8"); }
} catch (UnsupportedEncodingException e) {
// TODO 自动生成 catch 块 e.printStackTrace(); }
return rt; } //初始化方法
public void init(FilterConfig config) throws ServletException {
} }
然后在web.xml文件中进行相关的配置 : EncodingFilter ocean.mvc.filter.EncodingFilter EncodingFilter /*
还有就是在tomcat里配置编码URIEncoding为UTF-8格式的