jsp乱码

1. 这是一个Tab文件, 负责计算 1~ 100 内的偶数之和:

<%
	int i, sum = 0;
	for(i = 0; i < 100; i++){
		if(i % 2 == 0){
			sum += i;
		}
	}
	out.println(sum);
%>

然后保存的时候MyEclipse提醒我保存的格式我选择了utf-8

index.jsp中这么写道

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib tagdir = "/WEB-INF/tags" prefix = "beijing" %>
<html>
	<head>                 	
	</head>
	<body>              
		<h3>以下是调用Tag文件的效果:</h3>
		<beijing:EvenSum />
	</body>
</html>

显示的时候index.jsp中文可以正常显示, 然而EvenSum中的中文就没有显示乱码了。 

后来我在tag文件中加了一句

<%@  tag pageEncoding="UTF-8"%>

这样乱码就可以解决了。JSP在被访问时,需要编译成Java的bytecode才会被执行,而这个编译过程是分两步进行的。第一步是:JSP -> Java文件的转换过程,第二步是Java -> class文件的编译过程。

应该是没有写的话, tag文件在编译的时候采用的 iso-8859-1, tag文件的默认字符编码就 ISO-8859-1, 它是不支持中文的


2. 实训写相册的时候想从url  localhost:8080/Photo/showPhoto.jsp?id=3&ablum=楚门的世界  ,提取ablum出现乱码。解决如下:

   jsp头部是<%@ page contentType="text/html; charset=utf-8"%>

   原来的写法

		<%
        		request.setCharacterEncoding("utf-8");
        		String ablum_name = request.getParameter("ablum_name");
        		byte b[] = ablum_name.getBytes("utf-8");
        		ablum_name = new String(b);
         	 %>
基本上所有的组合都试过还是乱码,后来网上终于搜到一个答案:

写法一:

			String ablum_name = request.getParameter("ablum_name");
        		byte b[] = ablum_name.getBytes("ISO8859-1");
        		ablum_name = new String(b, "utf-8");
写法二:

			String ablum_name = request.getParameter("ablum_name");
			ablum_name = new String(ablum_name.getBytes("ISO8859-1"), "utf-8");




你可能感兴趣的:(jsp乱码)