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>
后来我在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");