JSP <a href="">中传递中文的问题 5

在一个页面上,有个缩略图,点击打开新窗口。连接地址是图片的地址,因为图片有中文,所以打开新窗口失败。这个问题怎么解决啊?谢谢不能改。。就是要中文不好意思,没有解决问题不好... 在一个页面上,有个缩略图,点击打开新窗口。

连接地址是图片的地址,因为图片有中文,所以打开新窗口失败。这个问题怎么解决啊?谢谢
不能改。。就是要中文

不好意思,没有解决问题

不好意思啊!都没有解决到问题,谢谢!!
展开
 我来答
百度网友f40712d
推荐于2018-03-26 · TA获得超过830个赞
知道小有建树答主
回答量:643
采纳率:0%
帮助的人:725万
展开全部
你好啊 ,你学jsp是吧!
你可能还不知道jsp在在传递中文时候会出现乱码

所以说你的图片路径在传递后的路径系统识别不出来了

所以你要么改成英文的,要么解决中文乱码的问题

怎么解决呢?

这有篇文章,你看看,我试过,可以成功

关于JSP中文乱码

JSP文件中乱码现象经常遇到,那如何处理就是我们不可避免的话题,那么该如何解决呢,下面我针对不同的情况,给出几种处理方式:

1) JSP页面中文乱码,这种情况比较好处理,在页面的page指令中加上如下一项就行
<%@ page contentType=”text/html;charset=UTF-8” %>

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中文参数乱码处理,
比如:超链接方式
<%
String str="我是中国人";
%>
<a href="next?str=<%=str%>">我是链接,单击可以提交参数</a>
注:next 为 Servlet的URL Pattern
那在将中文作为参数值传递时,首先要把中文字符串进行编码转换,转换成URL格式
操作如下:
<%
String str="我是中国人";
//使用URLEncoder.encode方法
str = URLEncoder.encode(str,"UTF-8");
%>
<a href="next?str=<%=str%>">我是链接,单击可以提交参数</a>

综合以上几种比较常见的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文件中进行相关的配置 :

<!-- 配置过滤器 -->
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>ocean.mvc.filter.EncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern> <!-- 匹配所有的请求 -->
</filter-mapping>
hyj_zhl
2008-08-05 · TA获得超过369个赞
知道小有建树答主
回答量:262
采纳率:0%
帮助的人:151万
展开全部
有两种方法:
一,图片改为英文名
二,对图片的路径名进行处理,假设图片路径名为String imgRoot=new String(imgRoot.getBytes("ISO-8859-1"),"GB2312");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Dui_Zhang
2008-08-05 · 超过16用户采纳过TA的回答
知道答主
回答量:112
采纳率:0%
帮助的人:77.2万
展开全部
把图片名改为英文名.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fe59b4c2b
2008-08-05 · TA获得超过1130个赞
知道小有建树答主
回答量:1174
采纳率:0%
帮助的人:774万
展开全部
url =java.net.URLEncoder.encode(imgpath,"UTF-8");

这样做就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式