Ⅰ 怎么解决jsp中文乱码问题,我要疯了
1、JSP页面出现的中英文乱码:
我们的PageCharset.jsp页面代码如下所示:
[html]view plain
<%@pagelanguage="java"import="java.util.*"%>
<html>
<head>
<title>中文显示示例</title>
</head>
<body>
中文显示的示例。
<%
out.print("这里是用jsp输出的中文");
%>
</body>
</html>
当我们在保存我们的文件的时候会出现下面的提示:
整因为在我们的MyEclipse中默认的编码为ISO-8859-1,而ISO-8859-1不支持中文的编码,所以jsp页面代码如果出现中文就不能保存了。对于这样的错误,我们只要在页面上加上支持中文的编码格式就可以了,在jsp页面中加上pageEncoding=“gb2132” 支持中页面的编码格式就可以了。这样我们就能正常保存我们的jsp源文件了。
2、URL传递参数中文乱码
[html]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
<html>
<head>
<title>URL传递参数中英文处理示例</title>
</head>
<%
Stringparam=request.getParameter("param");
%>
<body>
<ahref="URLCharset.jsp?param='中文'">请单击这个链接</a>
您提交的这个参数为:<%=param%>
</body>
</html>
启动tomcat运行结果出现url传递的中文乱码:
这里我们需要配置tomcat服务器文件,才能解决这个问题。具体方法是,在tomcat的conf目录下找到server.xml配置文件,找到如下代码
[html]view plain
<spanstyle="font-size:18px"><Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/></span>
在后面添加上编码方式,URIEncoding="gb2312" 重新启动tomcat问题就解决了。
3、表单提交中问乱码
对于表单中提交的数据,可以用request.getPraramter("");方法来获取,但是当表单中出现中文数据的时候就会出现乱码。
我们的提交表单的页面,FormCharset.jsp页面如下:
[html]view plain
<%@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Form中文处理示例</title>
</head>
<body>
下面是表单内容:
<formaction="AcceptFormCharset.jsp"method="post">
用户名:<inputtype="text"name="userName"size="10"/>
<inputtype="submit"value="提交"/>
</form>
</body>
</html>
我们的AcceptFormCharset.jsp页面:
[html]view plain
<%@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Form中文处理示例</title>
</head>
<body>
下面是表单提交以后request取到的表单的数据:<br>
<%
out.println("表单输入的userName值为:"+request.getParameter("userName")+"<br>");
out.println("表单输入的pasword值为:"+request.getParameter("password")+"<br>");
%>
</body>
</html>
提交表单:
结果如下:
我们看到我们在表单中的中文数据出现了乱码,为什么楚翔这种情况呢?是因为我们的tomcat中,对于以post方式提交的表单编码格式默认为ISO-8859-1的编码格式,而这种编码格式是不能编码中文的,所以就会出现乱码的现象了。对于这种情况,我们可以对表单中的数据进行处理,在取得表单参数的时候设置编码方式,我们更改了我们的接受表单数据的页面如下所示:
[html]view plain
<%
StringuserName=request.getParameter("userName");
StringpassWord=request.getParameter("password");
out.println("表单输入的userName值为:"+newString(userName.getBytes("ISO-8859-1"),"gb2312")+"<br>");
out.println("表单输入的pasword值为:"+newString(passWord.getBytes("ISO-8859-1"),"gb2312")+"<br>");
%>
这样就得到我们想要的效果啦:
4、数据库操作中文乱码
我们在建立数据库的时候,最好是能选择支持中文编码格式,最好是能和jsp页面编码格式保持一致,这样就尽可能的减少数据库操作中文乱码的问题,最开始的连接数据库的时候,编写好数据库的编码策略,也就是使用这种形式的URL:jdbc:Oracle:thin:@localhost:1521:TEST;userEnicode=true;characterEncoding=gb2312; 这样我们选择的数据库的编码和我们的jsp编码就一致了。
写入到数据库的时候,数据库中中文乱码:
但是如果我们在最开始的时候没有对数据库的编码进行设置,并且我们的数据库中已经有大量的数据的话,我们再向数据库中写入中文数据,数据库中的中文显示为乱码。在写入数据的时候出现乱码,是因为我们在处理表单的时候没有对字符的编码设置,对于这种情况,我们在jsp中或servlet中加入:
rquest.setCharacterEncoding("gb2312");//处理表单请求的时候设置编码。
这样再看我们的数据库,插入的中文字段就不会乱码了。
从数据库中读出中文乱码:
数据库中的中文出现乱码,就是在读取数据库的时候进行转码,这样显示就不会乱码了。我们整理这样的一个转码函数:
public String encoder(String str) throws UnsupportedEncodingException
{
String result = new String(str.getBytes("ISO-ISO-8859-1)"),"gb2312");
}
5 在myeclipse开发工具中打开中文显示乱码
在myeclipse中默认的编码方式为ISO-8859-1,所以打开有其他编译器编码的jsp页面就会出现乱码,是因为两个编译器保存源文件编码格式不同,在UltralEdit可以支持中文,但是在Eclipse对jsp文件的保存方式为ISO-8895-1,这种编码不支持中文,所以就会出现乱码。
对于这种情况,我们可以更改myeclipse默认的编码方案,myeclipse->Window->Preferences->General->Content types->Test->JSP
这样问题就解决啦!
6 Filter批量设置编码格式
我们对于每一个jsp或servlet我们都要设置编码格式,效率有些低,我们的servlet的Filter解决了我们的问题。在前篇写过Filter的解决中文乱码问题的文章,在这里就不赘述了。http://blog.csdn.NET/lovesummerforever/article/details/9924413
需要强调的一点,开始使用Javamodel1模型的时候,我们在web.xml中配置只需要配置好jsp页面就可以了,在model2模型中我们使用servlet作为控制器,我们就需要在Filter的配置文件web.xml中配置好servlet的设置,对所有的servlet处理的表单编码进行设置。
[html]view plain
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
Ⅱ 如何彻底解决jsp页面中文乱码及数据库乱码
jsp读取数据乱码原因如下:
1、JSP连接数据库语句指定的编码不正确
解决方案:在JSP连接数据库的语句中,带上useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
2、JSP页面没有指定数据提交的编码,就会造成乱码:
解决方案:这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("GBK"); 指定提交的即可。
Ⅲ java中的乱码怎么解决啊 中文注释乱码
jsp乱码:
增加:charset="UTF-8"
java乱码:
注释乱码解决方法:
依次点击:
右键项目--->Properties--->Resource--->Text file encoding ----->Others --->选择【UTF-8】
然后即可解决注释乱码问题
Ⅳ 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");
%>
完毕将完美解决中文字符参数乱码问题。
Ⅳ Eclipse中jsp页面的乱码
通过下面三个大类解决。
一. 设置工作空间的编码
1点击菜单栏中的窗口(内容Window)— —选项(Preferences)。
2点击常规(General)— —工作空间(Wordspace),然后在右侧的文本文件编码格式(Text file encoding)中选择想要设置的编码格式,系统默认的格式为GBK。
二. 设置项目的编码
1如果其他的项目中不存在乱码问题,只是个别项目显示时出现乱码,那么不需要设置工作空间的编码,只需要修改项目的编码即可。
2选中项目后,右键点击,在弹出的菜单中点击属性(Properties)。
3在弹出的属性窗口中,选择资源(Resource)— —点击选择Other(其他),然后选择想要的编码格式。
三. 设置单个文件的编码
只是个别文件出现了乱码,那么设置个别文件的编码格式就可以解决问题了。选中有乱码的文件,然后点击右键。在弹出的菜单中选择属性(Properties)。
在弹出的属性窗口中选择资源,点击Other(其他)后设置个别文件的编码方式。
Ⅵ 在jsp文件中的html显示乱码怎么解决
在jsp文件中的html显示乱码是因为服务端和客户端的编码不一致导致的。
如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。
解决办法:
1、未指定使用字符集编码
下面的显示页面(display.jsp)就出现乱码:
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">
</head>
<body>
<%out.print("JSP的中文处理");%>
</body>
</html>
只要在页面开始地方用下面代码指定字符集编码即可,在JSP页面中指定编码方式(gb2312),和浏览器解码方式设置相同,即在页面的第一行加上:
<%@ page contentType="text/html; charset=gb2312"%>,就可以消除乱码了。
完整页面如下:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">
</head>
<body>
<%out.print("JSP的中文处理");%>
</body>
</html>
2、 编码字符集设置不一致
<%@ page language="java" pageEncoding="gb2312"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">
</head>
<body>
<%out.print("JSP的中文处理");%>
</body>
</html>
第一处<%@ page language="java" pageEncoding="gb2312"%>的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。
第二处编码为解码格式。因为存为gb2312的文件被解码为iso8859-1,这样如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,也会出现乱码。必须一致才可以。
第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式用不用设置都可以。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式出现了乱码。
完整解决代码如下:
<%@ page language="java" pageEncoding="gb2312"%>
<%@ page contentType="text/html;charset= gb2312"%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">
</head>
<body>
<%out.print("JSP的中文处理");%>
</body>
</html>
Ⅶ 解决:JSP页面取出数据库中的中文出现乱码
jsp读取数据乱码原因如下:
1、JSP连接数据库语句指定的编码不正确
解决方案:在JSP连接数据库的版语句中,带上权useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
2、JSP页面没有指定数据提交的编码,就会造成乱码:
解决方案:这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("GBK"); 指定提交的即可。
Ⅷ 关于jsp被tomcat编译后的网页出现汉字乱码。
jsp乱码原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。
一、首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。
基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。
重点介绍第二类乱码,即Java程序与其他存储媒介交互时产生的乱码。很多存储媒介,如数据库,文件,流等的存储方式都是基于字节流的,Java程序与这些媒介交互时就会发生字符(char)与字节(byte)之间的转换,例如从页面提交表单中提交的数据在Java程序里显示乱码等情况。
如果在以上转换过程中使用的编码方式与字节原有的编码不一致,很可能就会出现乱码。
二、解决方法
对于流行的Tomcat来说,有以下两种解决方法:
1) 更改 D:\Tomcat\conf\server.xml,指定浏览器的编码格式为“简体中文”:
方法是找到 server.xml 中的
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />
可以这样验证你的更改是否成功:在更改前,在你出现乱码的页面的IE浏览器,点击菜单“查看|编码”,会发现“西欧(ISO)”处于选中状态。而更改后,点击菜单“查看|编码”,会发现“简体中文(GB2312)”处于选中状态。
b)java程序要这么修改:
public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
...
}
}
response.setContentType("text/html; charset=GBK");这句话的作用是让浏览器把Unicode字符转换为GBK字符。这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了。
Ⅸ jsp怎么解决中文乱码的问题
1.通过浏览器调用JSP页面,在客户端浏览器中所有的中文内容出现乱码;解决方案:替换ISO-8859-1,修改页面编码为UTF-8,ujiuye
3.通过浏览器调用Servlet,Servlet在浏览器中显示内容出现乱码;解决方案:在Servlet使用response在输出内容之前,先执行response....
5.提交页面表单元素给对应的JSP页面或者Servelt后,接收方出现表单数据中文值乱码;解决方案:在接收POST提交的参数之前,使用request.setCharacterEncoding(“UTF-8")设定接收参数的内容使用UTF-8编码 ,
7用Get方式传递参数,中文字符会出现乱码; 解决方案:Get提交默认是以ISO88591传递,如果容器没有做配置修改,程序则需要手工进行编码转换