最近学JSP的tag文件部分,在实际操作的时候发现个问题
<%@ page contentType="text/html;charset=gb2312"%>
和
<%@ page contentType="text/html;Charset=gb2312"%>
不知道大家看出这两个的区别没有。就是charset的首字母是否大写。当首字母小写的时候,如果tag文件中没有设置编码 ,那么jsp引用tag文件中的中文会显示乱码。
当charset首字母大写的时候,即使tag文件没有设置编码,那么,中文同样可以显示。还有一种情况,当我在jsp页面格式化日期的时候,输出
"yyyy-MM-dd hh:mm:ss(E)"
在输出的时候 如果charset的首字母大写,星期的地方就会乱码
如果小写,可以正常显示星期。求各位高手指导~~这是怎么个原理啊
<%@ page contentType="text/html;charset=gb2312"%>
和
<%@ page contentType="text/html;Charset=gb2312"%>
不知道大家看出这两个的区别没有。就是charset的首字母是否大写。当首字母小写的时候,如果tag文件中没有设置编码 ,那么jsp引用tag文件中的中文会显示乱码。
当charset首字母大写的时候,即使tag文件没有设置编码,那么,中文同样可以显示。还有一种情况,当我在jsp页面格式化日期的时候,输出
"yyyy-MM-dd hh:mm:ss(E)"
在输出的时候 如果charset的首字母大写,星期的地方就会乱码
如果小写,可以正常显示星期。求各位高手指导~~这是怎么个原理啊
charset的时候 编译器能读起到这个属性,并对页面做编码处理,大写的时候编译器不知道这是什么,就不对页面做什么处理了
<%@ page pageEncoding="GBK" contentType="text/html;charset=GBK"%>
<html>
<head>
<title>本页面采用charset=utf-8</title>
</head>
<body>
<form action="charset.jsp" method="post">
<input type="text" name="boy"><input type="submit" value="提交给charset.jsp" name="submit">
</form>
<form action="Charsetd.jsp" method="post">
<input type="text" name="boy"><input type="submit" value="提交给Charsetd.jsp" name="submit">
</form>
</body>
</html>Charsetd.jsp页面,采用大写Charset,显示为正常,不需中间转码<%@ page contentType="text/html; Charset=utf-8" %>
<html>
<head>
<title>正常显示,但是如果Charset写成charset--C小写,则获得参数为乱码。即使使用utf-8重新编码也为乱码</title>
</head>
<body>
<%=request.getParameter("boy")%><br>
<%=request.getParameter("submit")%>
</body>
</html>charset.jsp 本页面采用小写charset,全显示为乱码<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>本页面采用charset小写,从新编码,但全为乱码</title>
</head>
<body>
<%String boy = request.getParameter("boy");
String submit = request.getParameter("submit");
byte b[] = boy.getBytes("utf-8");
String st1 = new String(b);
out.println("boy "+st1+" "+new String(st1.getBytes("ISO-8859-1")));
out.println(boy+" "+submit);
out.println("boy "+new String(b));
b = submit.getBytes("ISO-8859-1");
String st2 = new String(b);
out.println("submit"+st2+" "+new String(st2.getBytes("utf-8")));
%>
</body>
</html>三)采用gb2312编码1.submit.jsp<%@ page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>本页面采用charset=gb2312</title>
</head>
<body>
<form action="charset.jsp" method="post">
<input type="text" name="boy"><input type="submit" value="提交给charset.jsp" name="submit">
</form>
<form action="Charsetd.jsp" method="post">
<input type="text" name="boy"><input type="submit" value="提交给Charsetd.jsp" name="submit">
</form>
</body>
</html>2.Charset.jsp<%@ page contentType="text/html; Charset=gb2312" %>
<html>
<head>
<title>本页面采用大写Charset设置,正常显示,若采用小写charset则为乱码</title>
</head>
<body>
<%=request.getParameter("boy")%><br>
<%=request.getParameter("submit")%>
</body>
</html>
3.charset.jsp<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>本页面采用charset小写,ISO-8859-1从新编码后正常显示</title>
</head>
<body>
<%String boy = request.getParameter("boy");
String submit = request.getParameter("submit");
byte b[] = boy.getBytes("ISO-8859-1");
String st1 = new String(b);
out.println("boy "+st1);
b = submit.getBytes("ISO-8859-1");
String st2 = new String(b);
out.println("submit "+st2);
%>
</body>
</html>
public class page子类(){
private charset;
set,get;
page子类(){
charset=“一个默认的编码”
}
page子类(String src){
charset=src
}
public String bianyu(String s){
String restring;
if(!charset=""){
restring=new String(s.getBytes(charset))
}else{
restring=s
}
return restring;
}
}}
规定是小写吧。JAVA区分这个大小写的。