在用jquery处理html5的应用的时候,一直在firefox下测试都正常,用户用pad访问的时候说有乱码,
2 k7 ^( ^( _* _& N0 W自己试验了下果然,后发现chrome和ie内核下都是有此问题,此问题设置了页面属性为utf-8时候,只有firefox是传的charset=utf-8的头文件
: c6 [' x! _6 Z4 z" o& xchrome和ie都没有指定,所以出现乱码问题.0 a* j& P2 Y5 V1 q& C
解决方法: K! H* V1 j9 e, H7 U) Z4 l
$.ajaxsetup({. B# O! d( L9 c* s
contenttype: application/x-www-form-urlencoded; charset=utf-84 W4 Q5 r( T, _( o% T
}); i8 m' p$ M3 S
$.post(test.php, { name: i5a6, time: 2pm },* P9 g* z% R7 v8 k- |1 E
function(data){
" l, b2 f6 Y, M* J9 C3 ~' I9 \ process(data);
" y7 M" E- N! S [& f. O; u" R }, json);
& h3 a c% X9 B! S; v或者使用:. y& f! @% \* \
$.ajax({
0 Y E( ~; b% }0 O ,
8 I- G4 h2 b6 {6 Y type:post,
, C/ W, @" s6 r( x$ B. n1 R; p data:data,
) t5 n5 j2 q* w7 d( |7 _ contenttype:application/x-www-form-urlencoded; charset=utf-8,
- b6 l7 K$ C& E) k: H" w datatype:json,% n& Q; x1 `, |$ l& [
success: function(){; H1 Z3 D% X9 Z; r( a8 m
...) T% E: }% k, i- N$ a
}/ X* I3 Y' x5 k- E
})# n& l! w+ \+ ]" M e! L; n6 N
推荐使用第一种,不过也是根据自己的实际情况看的,有人推荐用 encodeuricomponent 做字符转换2 k9 d( A; y- A+ O5 b
总结一下ajax 提交数据乱码一些经验
4 l6 K; d8 }! F/ y3 k为了避免乱码,可以做到以下几步7 @2 ` p: w7 l6 p- d5 R5 b
解决方法
$ e) ]2 g! {1 m s Z( `8 R1,保持编码的统一,包括文件编码,数据库编码,网页content-type编码8 B) G& ^+ W) r( n! ^+ z6 q1 Q0 W
检查一下<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />/ G1 [! H& B& H3 {* E' L$ A
建议中文都是用utf-8,使用gbk/gb2312有可能会出现乱码
- w7 \4 O9 \3 W; a7 u: j7 ^2,使用post来发送而不是get' h2 l; K8 B7 q
get方法是会通过链接来传递参数,而且会自动urlencode(编码),而各个浏览器编码的方式可能不太一样。使用post可以避免这种情况。8 w6 i. o- r+ f. H* W1 ]
3,通过在js前端escape编码再发送,然后后台解码取得数据
0 B" L! m. y8 x这些可以在网上搜索
2 U6 G' x1 u M4,在全局设定contenttype,指定编码
* n" h$ z) a9 z因为jquery ajax是使用utf-8来编码发送数据的,ie在发送时却没加上charset=utf-8,从而导致乱码(ie默认使用iso-8859-1编码)5 y& D: t- Q9 i- n8 c
$.ajaxsetup({
! r9 V6 x! L/ J3 Fcontenttype: application/x-www-form-urlencoded; charset=utf-8
]* g( k1 b; ~ l$ @$ `5 G+ W U# G* L
更多网页制作信息请查看: 网页制作 |
|