JSP 中传递中文的问题
发布网友
发布时间:2023-07-03 20:55
我来回答
共4个回答
热心网友
时间:2023-09-13 16:01
你好啊 ,你学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>
热心网友
时间:2023-09-13 16:01
有两种方法:
一,图片改为英文名
二,对图片的路径名进行处理,假设图片路径名为String imgRoot=new String(imgRoot.getBytes("ISO-8859-1"),"GB2312");
热心网友
时间:2023-09-13 16:02
把图片名改为英文名.
热心网友
时间:2023-09-13 16:03
url =java.net.URLEncoder.encode(imgpath,"UTF-8");
这样做就可以了。
JSP 中传递中文的问题
1) JSP页面中文乱码,这种情况比较好处理,在页面的page指令中加上如下一项就行 <%@ page contentType=”text/html;charset=UTF-8” %> 2) JSP页面采用表单提交时,提交的数据中包含中文,并且提交方式为post这时我们获取表单数据后,展示到其它页面时会出现乱码,解决方案是在获取请求中的参数前,...
如何解决 jsp 中url传值的中文乱码问题
在jsp中,如果在url中传递中文时会出现乱码,其实解决方法非常简单: 第一步:编码(以传递的参数为str为例) 在传递数据前将str进行编码Java.net.URLEncoder.encode(str) 第二步:解码 在获取数据端将得到的数据进行解码 new String(str.getBytes("ISO8859_1"))简单示例程序如下:<%@ page conten...
在JSP页面提交表单,以post方式提交,写了过滤器处理中文乱码问题
回答:可能造成的原因: 页面 后台业务 数据 中间有一个环节编码不一致。 是否对该字段做了编码转换。 针对1: 检查页面编码 是什么编码。如: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> 过滤器设置的是什么编码。数据库采用什么编码。然后最好统一编码。 针对2: 看...
jsp 页面间 传参 中文 乱码 问题?
url传中文..应当尽量避免这么做..因为会乱码..当然如果你所有..所有的地方编码都统一的话就没用问题..但是很难的..建议所有地方都用utf-8..你可以 String name = new String(request.getParameter("groupTitle").getBytes("ISO8859_1"),"你页面的编码方式");试下..之所以乱码..因为经过了tomcat...
怎么解决jsp页面get传值中文乱码问题
在jsp页面中,设置页面的存储编码和页面输出时的编码:<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%> 这样,就统一了编码为utf-8。这种方式在post提交表单中含有中文时没有问题。但是在用get提交时,如果含有中文,就会出现类似于“? ? ?”的乱码...
jsp中传的get请求,在servlet中文是乱码
在上述的get请求所导致乱码问题中,还有一种解决的方案,我们常用Tomcat作为运行Servlet和JSP的容器,而Tomcat内部默认的编码是ISO-8859-1,所以对于get请求方式,其传递的数据(URI)会附加在访问的资源后面,其编码是Tomcat默认的,如果修改该URI的编码,那么对于所有的get请求方式便不会出现乱码了包括上边说...
JSP页面中文乱码问题解决方法
JSP页面中文乱码问题解决方法 1.新建两个JSP页面 2.在c.jsp中新建一个表单 3.在d.jsp中接收这个值 4.运行c.jsp 5.输入带中文的参数,点击提交 6.发现接收过来的中文是乱码,英文正常 解释下:JSP默认参数在传输过程中使用的编码为ISO-8859-1 而两个页面使用的都是UTF-8 的编码 7.在d.jsp中...
jsp不能上传含中文zip文件
JSP处理乱码问题是一个痛苦的过程总结如下:1、第一类乱码:就是文件传送过来的文件名等是乱码;但是servlet输出的页面汉字正常显示。解决方法:将传送的JSP页面(即含有表单的页面)的页面编码方式改为:<%@ page contentType="text/html; charset=GB2312" language="java" import="java.sql.*" error...
jsp中处理中文乱码的解决方案有哪些
getParameter ("传递的参数名");%> 由此,获得参数后的 str 内将是正确的中文信息,完全避免了乱码的显示。可用 java.net.URLDecoder.decode 函数 例如 < String str1 = java.net.URLDecoder.decode(request.getParameter("传递的参数名"),"UTF-8");> 完毕将完美解决中文字符参数乱码问题。
“JSP页面提交后,提交的post中文是正常的,但是到达服务器上,中文就乱...
new String(str.getBytes("ISO8859-1"),"UTF-8") 这种方法可以解决提交时候的问题,new String(str.getBytes("UTF-8"),"ISO8859-1") 同样的道理解决已经编码的数据要显示到页面的时候就要反着写 还有就是项目中最好使用统一的编码包括:文件保存的时候使用的编码,jsp文件翻译时使用的编码,服务器...