首页 > 代码库 > 中文乱码问题解决方案
中文乱码问题解决方案
UTF-8编码与GBK,GB2312编码区别
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
简单的说:
UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛.
GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大.
提示:如果您的网站客户群体主要是面向国内用户的,建议使用GBK版本,因为它可以节省空间,及相对utf-8版本来讲稳定一些。
中文乱码解决办法
1. 以post方式提交的表单数据中有中文字符
在获取请求参数值之前
request.setCharacterEncoding(“GBK”);指定输出内容的编码格式
<%@page contentType=”text/html;charset=GBK” %>2. 以get方式提交的表单中含有中文字符
String name=request.getParameter(“name”); name = new String(name.getBytes(“ISO-8859-1”,”GBK”));3. 在数据库中存储和读取中文数据
设置数据库的默认编码方式为GBK,GB2312
4.tomcat支持中文
<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>5.过滤器
package com.wzs.action; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class SetCharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; /** * 获取过滤器初始化 */ public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding");// 使用的编码 String value = http://www.mamicode.com/filterConfig.getInitParameter("ignore");// 是否忽略客户端所指定的编码><filter> <filter-name>SetCharacterEncodingFilter</filter-name> <filter-class> org.sunxin.ch17.filter.SetCharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> <init-param> <param-name>ignore</param-name> <param-value>true</param-value> </init-param> </filter>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。