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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值