在处理一个GB2312编码的网站,用jQuery AJAX提交时,无论是在数据库,还是load返回页面,中文数据都变成了乱码。
jQuery AJAX中文乱码原因在于javascript使用的是UTF-8国际编码,UTF-8每个汉字用4个字节来存储。而我的页面和数据库都用GB2312编码,这就造成了AJAX send数据的时候出现中文乱码的问题。
解决方法是,所有的页面编码声明都用utf-8,数据库、表、字段也用utf-8。
代码如下 | 复制代码 |
<Meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> MysqL_set_charset('UTF8') |
“三码合一”指的是:“数据库”、“视图”、“代码”,编码的统一。文件存储也要是utf-8编码格式。
原理和更复杂的解决方法,就不多写了,用的时候搜一下。
推断:看来要解决这个中文乱码问题,就必须给AJAX异步提交指定显 示的charset!
马上查阅JQuery的AJAX工具函数的说明,发现options中有一个指定content-type的参数,给我的AJAX代码加上:
代码如下 | 复制代码 |
jQuery(form).ajaxSubmit({ url: "ajax.aspx?a=memberlogin",type: "post",dataType: "json",contentType: "application/x-www-form-urlencoded; charset=utf-8",success: showLoginResponse }); |