导航:首页 > 编程语言 > jsp中传参乱码

jsp中传参乱码

发布时间:2024-06-16 07:43:19

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

你好啊 ,你学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>

㈡ jsp高手请进,我用jspsmartupload上传文件,但我表单获得的中文是乱码(UTF-8)的,

页面最顶部声明页面的编码格式:
请问你服务器是windows还是,
如果是linux:<%@ page contentType="text/html;charset=utf-8" language="java" %>试试
如果是windows:<%@ page contentType="text/html;charset=GBK" language="java" %>试试

SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.upload();//必须放在获得表单参数之前
su.getRequest().getParameter("addsubmit")//获得request参数
com.jspsmart.upload.File files = su.getFiles().getFile(0);
String fileName = new String(files.getFileName());//获得名称

我这边服务在windows平台时只用修改页面编码格式为GBK就一切OK,但是在linux下需要吧页面编码格式改为UTF-8

另外,form表单中的file文件名可能从request得不到,需要通过SmartUpload 类获得文件名,类似上面处理,因为: ENCTYPE="multipart/form-data"

㈢ 如何解决 jsp 中url传值的中文乱码问题

第一步:在tomcat 的server.xml文件中设置web服务器端口配制中加下面两句:
useBodyEncodingForURI="true"
URIEncoding="UTF-8"

第二步:JSP页面编专码用UTF-8(也可以用“gb2312",第一步与属解码要一至)传值时编码一下:
以传递的参数为strPar为例, 在传递数据前将strPar进行编码java.net.URLEncoder.encode(strPar,"UTF-8");

第二步:解码 在获取数据服务器端Action中得到的strPar进行解码java.net.URLDecoder.decode(strPar,"UTF-8");
本人测试时传入action中可以不解码也正常。

举例:

Url传值:
<a href="myPage.jsp?strPar=<%=java.net.URLEncoder.encode("中文参数值","UTF-8")%>">点击这里</a>

//下面是解码
String cnStr=java.net.URLDecoder.decode(strPar,"GB2312");

㈣ jsp中处理中文乱码的解决方案有哪些

JSP 中文乱码处理解决方案

初学JSP,尤其是环境(GlassFish默认UTF-8,则不存在此类问题),经常会因为中文汉字字符集设置问题导致中文乱码,本文就这一问题提出解决方案,解决中文乱码问题,供各位参考,我采用的方案是统一字符集至UTF-8,同时避免GB2312所带来的中文字符集不够用的隐患,需注意的地方有三点,默认情况下是英文字符集。
1、Tomcat 的 server.xml 文件,设置服务器端口工作方式
2、Servlet 和 JavaBean 对字符串字符集处理的统一
3、JSP页面的字符集统一
完成这三点统一,中文想乱码都难,如果使用MySQL的话,数据表也需要做UTF-8统一。

修改Tomcat的server.xml文件,该文件位于 tomcat/conf,红色部分为添加部分,也就是当前使用的HTTP端口的连接方式的设置。
找到Connector 标签,使 Tomcat 服务器以UTF-8模式进行工作,从底层对乱码进行处理,修改如下:
<Connector URIEncoding="utf-8" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
其它应用服务器例如GlassFish默认支持utf-8,服务器本身无需设置,只须代码上注意即可。

运行代码内设置如下:
JavaBean 和 Servlet 内需要处理中文的地方之前,或者所有函数最前端加上
request.setCharacterEncoding ("UTF-8");
response.setCharacterEncoding ("UTF-8");
避免在 JavaBean 和 Servlet 内出现汉字乱码。

JSP代码中的 JAVA 字符编码设置,在页面上对乱码进行处理。

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

红色为制定JSP处理字符采用UTF-8编码处理方式。

<%request.setCharacterEncoding ("UTF-8");%>
JSP内JAVA代码设定接收参数为UTF-8编码

JSP 内 HTML 头的编码设置,页面处理以UTF-8,避免显示乱码。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Note Page</title>
</head>
<body>
……
……
红色部分UTF-8制定HTML页面使用的编码方式

<form action=index.jsp method="post"><h3>Please Input Your Name:</h3>
<input type="text" size="30" name="中文名字" value="" >
<input type=submit value="提交">
</form>

接收代码如下:

<%
// 通过二进制传递的参数,因为UTF-8的设置,无须转换,直接中文操作,而不会出现乱码。
String temp1 = request.getParameter ("yourname");
……
%>

采用get方式略有不同,若只采用以上设定,遇中文参数,因编码不同,会导致部分文字信息丢失,所以在提交前务必进行编码,这里用到两个函数java.net.URLDecoder.decode 和java.net.URLDecoder.encode,分别是编码和解码。

<a href="
<%=request.getContextPath()%>/index.jsp?传递的参数名=
<%=java.net.URLEncoder.encode (传递的汉字变量,"UTF-8")%>">
<%=超链接热点显示内容%>
</a>

作为参数传递的中文,由 java.net.URLEncoder.encode函数将要发送的变量解析为16进制数字编码,进行URL传递,接收代码如下:

<%String str = request.getParameter ("传递的参数名");%>

由此,获得参数后的 str 内将是正确的中文信息,完全避免了乱码的显示。

可用 java.net.URLDecoder.decode 函数
例如
<%
String str1 = java.net.URLDecoder.decode(request.getParameter("传递的参数名"),"UTF-8");
%>
完毕将完美解决中文字符参数乱码问题。

㈤ jsp中的乱码怎么解决

刚开始学习jsp的程序员都会遇到这样一个问题,就是网页上的中文无法显示.总结了以下几条方法。
1、在jsp页中加入一条语句:
<%@ page contentType="text/html;charset=gb2312" %>中文显示就正常了。

2、对于从网页中的文本框通过String parameter = request.getParameter(“parameter”);方式获得的字符串,均是8859_1的编码,
如果想把它显示在网页上就必须得用parameter = new String(parameter.getBytes(“8859_1”),”gb2312”)进行转换,windows和linux这两种系统都是一样的。
有一个简单方法,就是在 getParameter() 方法获取参数之前,使用request.setCharacterEncoding("GB2312");,将提交的信息转化为 GB2312 编码。

3、但是对于将数据写入数据库的问题,采取的方式就不同了:
windows下,必须要采用该字符串转换再插入数据库,而linux下就不需要,而是直接把8859_1编码的字符插入。
如果从数据库中读出的数据,对于windows因为在插入时已经做了转换,所以读出时已经是gb2312的,当把它显示在网页上时,不需要做编码转换,而 linux上的mysql中的数据是8859_1的所以要做编码的转换。

4、 如果你给某个字符串变量赋予一个中文字符串的值,那么在你取出他时,在网页上的显示是不需要做字符转换的,
但是如果你要在linux下做字符的比较,则还需要把字符做parameter = new String(parameter.getBytes(“gb2312”),”8859_1”)的转换。

5、长江电力网站解决中文问题的方法是:
1)在catalina.sh文件中的相关位置添加下面一行
-Dfile.encoding=GBK \
2)在每个jsp文件的最前面添加下面两行
<%@ page contentType="text/html; charset=GBK" %>
<%request.setCharacterEncoding("GBK");%>

㈥ jsp 页面间 传参 中文 乱码 问题

你的jsp页面是什么编码在用new String(request.getParameter("groupTitle").getBytes("ISO-8859-1"),"你页面的编码");在使用这句之前要设置request对象的编码格式,即request.setCharacterEncoding("页面的编码格式");

阅读全文

与jsp中传参乱码相关的资料

热点内容
华为账号用qq注册账号 浏览:327
台达plc编程完成怎么试运行 浏览:412
华为b137升级包下载 浏览:992
美团发布数据报告去哪里看 浏览:146
js的隐藏div显示 浏览:637
ps教程图片转换为粉笔字 浏览:816
下载网易云音乐最新版本 浏览:165
原神的数据文件指什么 浏览:725
解压找不到合适文件夹什么意思 浏览:461
iphone经营类 浏览:138
哪里可以看到老龄化数据 浏览:644
小型门户网站有哪些 浏览:563
简书网站打不开怎么办 浏览:467
关于新能源汽车有哪些外文数据库 浏览:271
word公式编辑器怎么打开 浏览:419
为什么电脑上的文件传不了去 浏览:919
反诈骗app注册日期怎么查 浏览:159
周年店庆微信文章素材 浏览:154
网络语你是坏人怎么说 浏览:788
龙龙网络电视 浏览:892

友情链接