导航:首页 > 编程语言 > jsp中文转码再发

jsp中文转码再发

发布时间:2024-10-27 05:59:30

❶ 在jsp中,如何在表单中输入汉字,另一个页面接受到,然后输出来,应该如何设置,

传输方式选“post”,在另一个页面的java代码中设置编码如下:
request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

这是比较简单的设置,如果是get传输方式还要另写。。。。

❷ jsp插入数据库乱码 中文的参数怎么处理

1、JSP页面乱码
这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,
2、数据库乱码
这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下: 在数据库连接字符串中加入编码字符集 String
Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
并在页面中使用如下代码:
response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312");
3、中文作为参数传递乱码
当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下: 在参数传递时对参数编码,比如
RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords) 然后在接收参数页面使用如下语句接收
keywords=new String(request.getParameter("keywords").getBytes("8859_1"));
response.sendRedirect("?gh=0001&xm=" + java.net.URLEncoder.encode("忘忧草")); String s=new String(request.getParameter("xm").getBytes("ISO8859_1"),"gb2312"); out.println(s);
4、JSP页面乱码加这句?
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %>
5、在form中用get方法传参乱码解决方法 如: 1、 login.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%> <html> <head>
<title>get传参乱码问题</title> </head> <body>
<form name="form1" action="login_do.jsp" method="GET"> <input type="text" name="username"/><br>
<input type="password" name="password"/><input type="submit" value="提交"/> </form> </body> </html> ============ 2、login_do.jsp
<%@ page language="java" contentType="text/html;charset=GBK"%> <%
String temp=request.getParameter("username"); if(temp!=null){ temp=new String(temp.getBytes("8859_1"),"GBK"); }
out.println(temp); %>

❸ jspsmartupload上传的文件名是乱码怎么办

方法一:(之前在页面直接跳转上传时能够解决问题,异步提交上传图片就不能正常了)

1.解决中文乱码:

【1】:首先上传页面和接收页面都必须制定编码格式为GBK;

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

【2】:在上传页面要response.setCharacterEncoding("GBK");

【3】:在接收页面要request.setCharacterEncoding("GBK");

【4】:注意上传时表单要指定编码为:enctype="multipart/form-data"

【5】:注意上传时表单要指定方法为:method="post"

方法二:(异步提交表单能正常解决)

【1】上传页面:(对参数做一次encodeURI)js

//对表单中的中文区域值得获取并进行转码

var name = parent.window.$("#tabs_name").val();

var direction = parent.window.$("#tabs_direction").val();

parent.window.$("#tabs_name").val( encodeURI(name));

parent.window.$("#tabs_direction").val( encodeURI(direction));

parent.window.$('#subject_modify').submit(); //提交表单

【2】接收参数页面(对参数做一次URLDecoder)

String name = smart.getRequest().getParameter("name");

name = URLDecoder.decode(name,"utf-8");

❹ JSP页面提交后,提交的post中文是正常的,但是到达服务器上,中文就乱码了。页面已经全部改为UTF-8

有以下几种方法可以解决
1.在jsp 的java代码执行之前写入在 <% response.setContentType("text/html;charset=UTF-8")%> 一定要是之前,因为设了这个下面代码才开始生效。可以写在jsp开头。
2.在在Servlet中service方法开始部分写入 response.setContentType("text/html;charset=UTF-8")
3.在过滤器中写入在Servlet中 response.setContentType("text/html;charset=UTF-8") 一般都写在过滤器中,可以减少代码重复量
4.对于提交已经编码的数据需要先解码再编码,也就是楼主的方法
new String(str.getBytes("ISO8859-1"),"UTF-8") 这种方法可以解决提交时候的问题,
new String(str.getBytes("UTF-8"),"ISO8859-1") 同样的道理解决已经编码的数据要显示到页面的时候就要反着写
还有就是项目中最好使用统一的编码包括:文件保存的时候使用的编码,jsp文件翻译时使用的编码,服务器响应编码,和提交编码,还有就是数据库的编码。
eclipse下:jsp和class文件保存时使用编码在文件右键的property选项中能找到,
jsp页面编码有两个<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
pageEncoding是设的是tomcat将jsp文件翻译成servlet程序的时候执行的翻译编码,而charset才是服务器响应编码 也就是servlet中的response.setCharacterEncoding 一般都设置成UTF-8;
提交数据的时候也需要你那样转码,不过转码工作却实是写在过滤器里,可以写代码的减少麻烦
提交参数时候要设置request的编码,也就是你遇到的问题,按照我前四步的说明做就可以了

❺ 做一个web登录界面,login.jsp里面进行登录,loginservlet进行登录处理,然后转回login.jsp进行显示

首先,你jsp跳转到Servlet是用哪种方法传值的,是form表单提交,还是用连接(&loginok=true)这样的提交。无论怎样提交。boolean loginok = req.getParameter(loginok);也不对啊。req是什么类型的啊?你的loginok是放在session里面的。所以先创建session对象,然后在用session的内置方法获取loginok的值。HttpSession session = request.getSession();然后在boolean loginok = session.getAttribute("loginok");
下面是我自己登陆用的Servlet希望可以帮到你:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName = "";
String userPwd = "";
String flag = "";
flag = request.getParameter("flag");
if (flag == null) {
flag = "";
}
if (flag.equals("back")) {
HttpSession session = request.getSession();
session.invalidate();
flag = "";
response.sendRedirect("/MicroBlog/initServlet");
} else {
boolean bool = false;
action login = new action();
try {
RequestDispatcher rd = null;
request.setCharacterEncoding("UTF-8"); // 中文转码
response.setCharacterEncoding("UTF-8");

userName = request.getParameter("name"); // 获得用户登录名
userPwd = request.getParameter("pwd"); // 获得用户密码

bool = login.getLogin(userName, userPwd);
HttpSession session = request.getSession();
if (bool) { // 登陆成功
UserForm userForm = login.getUser();
ArrayList<String> guanList = login.getGuan(userForm.getId());
ArrayList<ExForm> expList = login.getExp();
session.setAttribute("exp", expList);
session.setAttribute("user", userForm);
session.setAttribute("guan", guanList);
rd = request.getRequestDispatcher("user.jsp");

} else {
rd = request.getRequestDispatcher("error.jsp");
}

rd.forward(request, response);

} catch (Exception e) {
e.printStackTrace();
}
}
}

❻ jsp乱码问题有什么彻底的解决方法

由于jdk中只规定了必须有一些unicode utf8
等编码的实现,
好像对汉字编码没有什么实现的硬性规定,
所以有时候就会出现乱码问题。

数据库访问时的乱码问题,可以数据库连接中加上useunicode =true 以及用gbk 或gb2312编码就可以了:
在建立数据库时,将数据库中的所有表的编码方式都设置为gbk,原因是JSP中也使用了gbk编码,这样统一的结果是可以减少

很多不必要的编码转换问题。另外,在使用JDBC连接MySQL数据库时,连接字符串写成如下形式可以避免一些中文问题:

jdbc://mysql://hostname:port/DBname?user=username&
password=pwd&
useUnicode=True&
characterEncoding=gbk

如果是以数据源的方式连接数据库,在配置文件中使用:
<parameter>
<name>url</name>
<value>
jdbc://mysql://hostname:port/DBname?&useUnicode=True&characterEncoding=gbk
</value>
</parameter>
但是,如果使用一个已经存在的数据库,数据库的编码方式是ISO-8859-1,而Web应用中使用UTF-8,且数据库中已经有很多

重要信息,因此不能通过更改数据库的编码方式来解决问题。这个时候,在往数据库中写数据库时,一定要在JDBC连接字符串中加入

“useUnicode=True&characterEncoding=ISO-8859-1”,这样可以顺利的往数据库中写入正常的数据。但是,在将数据读出数据库时

,乱码又会出现,这个时候就应该在数据取出时对其转码,可以将转码功能写为一个函数,具体实现如下:
public String charConvert(String src){
String result=null;
if(src!=null){
try{

// 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组->通过使用指定的 charset 解码指定的

byte 数组,构造一个新的 String。
result=new String(src.getBytes("ISO-8859-1"),"gbk");
}catch(Exception e)
{
result=null;
}
}
return result;
} 于是,在从数据库读出数据过后调用charConvert(rs.getString("colName")),这样就可以正常显示数据库中的中文数据了



JSP中输出中文的乱码问题
所谓在JSP输出中文,即直接在JSP中输出中文,或者给变量赋中文值再输出等,这种情况下的乱码问题往往是因为没有给JSP页面制

定显示字符的编码方式,解决问题如下:

·在JSP页面头部加上语句<%@ page contentType="text/html;charset=gbk"%>(在Servlet页面中使用

httpServletResponse.setContentType("text/html;charset=gbk")),最好同时在JSP页面的head部分加上<meta http-

equiv="Content-Type" content="text/html;charset=gbk">

·在每次要输出中文的地方主动转换编码方式,比如要在页面中输入“中文”二字,就可以用以下方式:

<%
String str="中文";
byte[] tmpbyte=str.getBtyes("ISO-8859-1");
str=new String(tmpbyte);
out.print(str);
%>

获取表单提交的数据时的中文乱码问题

在没有加任何其他处理之前,用request.getParameter(panamName)获取表单提交中的数据,且表单数据中含有中文时,返回

的字符串会出现乱码。出现这种问题的原因是Tomcat的J2EE实现对表单提交,即以POST方式提交的参数采用默认的ISO-8859-1来处理


比如,建立一个test.jsp,内容为:
<%@ page contentTyp="text/html;charset=gbk"%>
<%
String str=request.getParameter("chStr");
if(str==null) str="没有输入值";
%>
<html>
<head>
<title>中文Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<meta http-equiv=param content=no-cache>
</head>
<body>你输入的内容为:<%=str%><br>
<form action="test.jsp" method="post">
请输入中文:<input type="text" name="chStr">
<input type="submit" value="确定">
</form>
</body>
</html>

运行过后,在输入框中输入汉字“中文”,提交过后再显示出来后就变成了一堆乱码。解决此问题的办法有两个。一是不修

改其他设置,只是在将表单中的中文数据取出来过后再转换编码,方法如语句String str=request.getParameter("chStr");String

str=new String(sre.getByte("ISO-8859-1"),"gbk"),但这种方法只是从一个局部来考虑问题,如果这样的地方太多,就不得不将这

条语句重复写很多次,在比较大的项目中,这是一种不太可行的方案。另一个方法就是让对所有页面的请求都通过一个Filter,将处

理字符集设置为gbk。具体的做法如下(在Tomcat的webapps/servlet-examples目录有一个完整的例子,也可以参考其中web.xml和

SetCharacter EncodingFilter的配置):

首先将%TOMCAT%/webapps/servlets-examples/Web-INF/classes/filters/目录下的文件SetCharacterEncodingFilter.class

拷贝到自己应用的/Web-INF/classes/com/util/filter目录下;然后再在web.xml文件的<web-app>后面加上如下配置代码:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.ccut.struts.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*<url-pattern>
</filter-mapping>

URL中的中文问题

对于直接通过在URL中传递中文参数,如“http://localhost/a.jsp?str=中文”这样的get请求,在服务端用

request.getParameter("name")时返回的往往是乱码。按以上的做法设置Filter没有用,用request.setCharacterEncoding("gbk")

的方式,仍然不管用。
例如,建立test2.jsp文件,内容为:

<%@ page contentTyp="text/html;charset=gbk"%>
<%
String str=request.getParameter("chStr");
if(str==null) str="没有输入值";
%>
<html>
<head>
<title>中文Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<meta http-equiv=param content=no-cache>
</head>
<body>你输入的内容为:<%=str%><br>
<form action="test.jsp" method="post">
<a href="test2.jsp?chStr=中文">点击这里提交中文参数</a>
</form>
</body>
</html>

运行后,可见通过URL传递的中文参数取出来过后变成了乱码,造成这种结果的原因是Tomcat中以get方式提交的请求对

query-string处理时采用了和post方法不一样的处理方式。
解决这个问题的方法是打开Tomcat安装目录下的/conf/server.xml文件,找到Connector块,往其中添加URIEncoding="gbk"

,添加过后完整的Connector块代码如下:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="gbk"
/>

在Struts中证实可以解决URI传递乱码问题.
可以这样做
1.设定Tomcat的URI编码为"UTF-8":修改%tomcat%\conf\server.xml中的<Connector>在中间加入URIEncoding="UTF-8";
2.先在页面上encodeURI(url);
3.后台代码中直接取出来的中文参数就已经OK了.
4. 试一试request.setCharacterEncoding("GBK");
不过这种方法用在servlet中行不通,在servlet中就必须对URI进行处理,Tomcat中有没有加入URIEncoding都没有差别.

阅读全文

与jsp中文转码再发相关的资料

热点内容
ps入门必备文件 浏览:348
以前的相亲网站怎么没有了 浏览:15
苹果6耳机听歌有滋滋声 浏览:768
怎么彻底删除linux文件 浏览:379
编程中字体的颜色是什么意思 浏览:534
网站关键词多少个字符 浏览:917
汇川am系列用什么编程 浏览:41
笔记本win10我的电脑在哪里打开摄像头 浏览:827
医院单位基本工资去哪个app查询 浏览:18
css源码应该用什么文件 浏览:915
编程ts是什么意思呢 浏览:509
c盘cad占用空间的文件 浏览:89
不锈钢大小头模具如何编程 浏览:972
什么格式的配置文件比较主流 浏览:984
增加目录word 浏览:5
提取不相邻两列数据如何做图表 浏览:45
r9s支持的网络制式 浏览:633
什么是提交事务的编程 浏览:237
win10打字卡住 浏览:774
linux普通用户关机 浏览:114

友情链接