编码格式
Java语言在内存当中默认使用的字符集
默认会用“Unicode”编码格式(字符集)来保存字符。
编码
把Unicode这种编码格式对应的字节数组,转换成某种本地编码格式(比如GBK)对应的字节数组,从而保存。Unicode-->GBK。
解码
把某种本地编码格式的字节数组转换成Unicode这种编码格式对应的字节数组。GBK-->Unicode。
注意事项:服务器默认使用ISO-8859-1编码格式,使用1个字节保存,无法存中文!因此中文会出现乱码。
Servlet如何输出中文
需要调用:response.setContentType("text/html;charset=utf-8");其中charset=utf-8表示:
1)用来指定编码格式,只要支持中文即可,比如也可设置为charset=gbk。
2)作用两个:①生成一个content-type消息头,告诉浏览器返回的数据类型和编码格式。
②服务器在输出时,会使用指定的编码格式进行编码。
如果表单有中文参数值,也需要注意编码问题
因为,当表单提交的时候,浏览器会对表单中的数据进行编码(会使用打开表单时的编码格式进行编码),而服务器默认情况下,会使用ISO-8859-1去解码,所以,会产生乱码问题。
1)解决方式一:
- step1:先保证表单所在的页面按照指定的编码格式打开。即:
<meta http-equiv="content-type" content="text/html;charset=utf-8" />已是一种规范(模拟content-type消息头,告诉浏览器正在解析的数据类型和编码格式)。 - step2:调用request.setCharacterEncoding("utf-8");意思是告诉服务器,使用指定的编码格式进行解码。
注意事项:该方法只能用于"post"请求!注意代码放置顺序,在
request.getParameter()方法前。
2)解决方式二:
- step1:同方式一的第一步。
- step2:使用new String(str.getBytes("iso-8859-1"),"utf-8");
网友评论