Java EE中编码方式

Java EE中编码方式

Servlet中的编码方式:
通过对response的设置编码方式使得返回的结果支持中文显示。

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");		//设置编码方式
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(request.getContentType()+"你好");	//要显示的中文
		out.print("<form action='./WhatIsContentType' method='post'>");
		out.print("name");
		out.print("<input name='name'>");
		out.print("<button>submit</button>");
		out.print("</form>");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}
如果要是提交的表单中有中文字符我们该如何正确的取的中文字符呢,可以通过filter来实现:

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub
		((HttpServletRequest) arg0).setCharacterEncoding("UTF-8");
		((HttpServletResponse) arg1).setCharacterEncoding("UTF-8");
		
		arg2.doFilter(arg0, arg1);
	}


JSP中的编码方式:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

pageEncoding指的是当前jsp页面文件本身的编码方式,默认是iso-8859-1。它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),所以要想有中文字符,JSP页面本身的编码首先要改成UTF-8或者GBK,否则用iso-8859-1编码汉字肯定会是乱码。

之后.java文件经过编译会生成.class文件,这个过程必定是UTF-8格式的编码

最后一个属性叫做contentType,我的理解和servlet中的response和request的contentType有点类似。因为servlet是java编写的,编码自身文件时就是UTF-8,而jsp是html和java混合,编码方式通过pageEncoding方式指定。如果说pageEncoding决定了能否正确编码,那么contentType中的charset决定了是否会显示乱码。

不包含中文字符其他字符的情况下:pageEncoding和charSet甚至任意设置都没有问题。

包含中文字符(及其他字符)的情况下:JSP页面包含中文例,首先pageEncoding必须要选择中文编码方式GBK,GB2312,或者直接UTF-8。这里pageEncoding如果设置成其他字符如iso-8859-1的方式,charset无论怎么设置都会乱码。如果pageEncoding选择了中文字符编码,或者UTF-8,那么charSet也设置成中文编码或者UTF-8即可,如果选择iso-8859-1编码同样会出现乱码。简言之就是pageEncoding和charSet尽量设置成统一的字符编码,需要支持汉字或其他字符情况,两者都设置成支持的字符编码方式。当然统一设置成UTF-8,就OK了。

参考地址:http://www.cnblogs.com/huangli1989/archive/2013/10/10/3361428.html



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值