首页 > JSP中utf-8中文乱码问题。。。

JSP中utf-8中文乱码问题。。。

我就不明白了。。我写了两个jsp文件,编码均为utf-8,一个就能正常显示中文,另一个则不能。。。求解啊

正常显示中文的jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>站内检索索引建立页面</title>
<script type="text/javascript">
	function checkForm(form){
		if(form.toIndexPage.value==""||form.toIndexPage.value==null){
			alert("请输入要建立索引的网站!");
			form.toIndexPage.focus();
			return false;
		}
		else
			return true;
	}
</script>
</head>
<body>
<form action="<%=request.getContextPath()%>/IndexServlet" 
	METHOD="post" onsubmit="return checkForm(this)">  <%--查询表单  10行--%>
<B>输入要建立索引的网站:</B>
<INPUT TYPE=text NAME="toIndexPage" SIZE=30 VALUE="">
<INPUT TYPE=submit VALUE="查询">
</form>
</body>
</html>

乱码显示中文的jsp

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*,java.util.*,java.text.*" pageEncoding="utf-8" %>
<% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>站内检索系统检索页面</title>
<style type="text/css">
<!--
.STYLE1 {
	font-family: "仿宋";
	font-size: 18px;
}
.STYLE2 {
	font-family: "黑体";
	font-weight: bold;
}
-->
</style>
</head>

<body>
<div>
  <div align="center" class="STYLE2">
    <h1>站内检索系统</h1>
  </div>
</div>
<div>
  <p align="center" class="STYLE1">索引建立成功:<%=request.getAttribute("WebName") %></p>
  <p align="center" class="STYLE1">请输入检索内容:
    <input type="text" name="textfield" />
    <input type="submit" name="Submit" value="检索" />
  </p>
</div>
<div>
  <div align="center">当前时间:<%String mydate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());%>
     
<%=mydate%></div>
</div>
</body>
</html>

请问是不是这一句代码生成的文字是乱码?

<%=request.getAttribute("WebName") %></p>

JSP里面通过request传送参数之后,会自动变为ISO8859-1的编码,所以从request中读取参数的时候,还需要设置这个取值的编码为UTF-8。

你可以看看JSP的教材上应该有讲解。

我也已经很久没有接触过JavaWeb了,如果有错误,还希望多多指教!


查一下JSP文件自身编码


大概是因为一个是utf-8编码,一个是utf-8 +bom的编码,两种的区别在视觉上是看不出来的。你放到eclipse中统一改成utf-8的就好了。


你的乱码明显是获取请求参数的时候,出现了汉字乱码。

参考:http://blog.csdn.net/b_qxzb/article/details/50179075


jsp文件自身的编码。如果你用myeclipse编写的话,要去修改一下新建文件时的默认编码。

【热门文章】
【热门文章】