jsp乱码

来源:互联网 发布:水乳推荐20岁 知乎 编辑:程序博客网 时间:2024/05/20 00:38

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");




原创粉丝点击