|
该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数
2 K5 O& k9 K7 m$ L2 U - v; T0 j5 V: m+ \; |4 f
function uniencode(text)
* T6 L& K6 @7 |: _: E& W{ & o& x' ]* T y# \3 f7 a
text = escape(text.toString()).replace(/\+/g, "%2B"); ( z" I3 c9 s. k8 J8 m
var matches = text.match(/(%([0-9A-F]{2}))/gi); 0 g0 @0 I1 V1 x# W4 Y7 x
if (matches) 4 x9 l* {# o4 c$ _0 K4 V4 W# u6 b
{
% o7 s2 T) f/ n% v3 ^ for (var matchid = 0; matchid < matches.length; matchid++)
- D" _9 @. g0 `( h {
9 _7 t3 I: M$ k9 ]) N! Y var code = matches[matchid].substring(1,3);
) t' x$ w+ h1 T if (parseInt(code, 16) >= 128) ) V0 K" _, d1 y0 j9 D
{
) f ^" z) q6 f2 X text = text.replace(matches[matchid], '%u00' + code); 7 N. ^3 A. S, c7 j' O7 I5 t
} / {1 V ~$ } H- y+ C# s! a( A
} & h9 T& A' r n0 [* M
}
7 t! T1 w) Z1 m- K9 d: _ text = text.replace('%25', '%u0025'); 7 x/ M5 j" L$ l
# n7 F6 i; e1 l; P: n, G
return text;
- N; n, L, y) k3 q* b} * y9 G& o" M' [# v# ~
; O" d, s. v6 ^# r( @6 b% _
当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.2 c: \1 o: ^6 Q% i# J! E) E' p
1 q/ l5 I" n r0 Wfunction convert_int_to_utf8($intval) ' |' ]7 m: N: j+ ?" h# N
{
* {3 k$ G$ d, t/ n2 y. T $intvalintval = intval($intval);
0 [/ U8 P! ^% m5 a# N/ [$ H switch ($intval) ! N" I" g, Z- u1 T( ]
{ + o2 f, @5 K0 w4 N3 o
// 1 byte, 7 bits
) s: P6 S" Z7 f# m" O8 K case 0: 5 q3 t; Y# ?) S" D5 v7 I" l* t9 y+ g
return chr(0);
9 V& p2 G3 R9 b case ($intval & 0x7F): 0 O* @$ S0 U0 \9 r2 o! V6 G
return chr($intval);
! |1 d. Y/ b+ Y Y% L4 L' @' |6 G7 X( c
9 C% X f4 p, J5 B: ^% L. W // 2 bytes, 11 bits
5 B2 t5 V2 e- j2 V- X9 C case ($intval & 0x7FF):
$ k2 i( R, w+ r return chr(0xC0 | (($intval >> 6) & 0x1F)) . 8 A* i, r( U+ E
chr(0x80 | ($intval & 0x3F)); 6 Q+ X+ w% j0 o4 T6 R
3 c y; f! u! @2 r' k$ @6 s# S: H
// 3 bytes, 16 bits # r) ~& R9 V; w. P q
case ($intval & 0xFFFF):
" X+ ]. U: }; M+ a( T return chr(0xE0 | (($intval >> 12) & 0x0F)) .
8 z: Y! K# u+ b! t$ q chr(0x80 | (($intval >> 6) & 0x3F)) .
1 @( p& m' n0 v* c chr (0x80 | ($intval & 0x3F));
) Q, V3 V% j& h& d4 J5 e% L! L - s8 a: F8 a! S5 {5 m
// 4 bytes, 21 bits 2 U9 q3 u( W- H; L7 ^
case ($intval & 0x1FFFFF):
2 L* H- D# {- f0 i* @9 X1 T" v# f return chr(0xF0 | ($intval >> 18)) . ! k0 u6 g+ o6 Q+ x
chr(0x80 | (($intval >> 12) & 0x3F)) . 8 m ]- Z- a1 W) S
chr(0x80 | (($intval >> 6) & 0x3F)) . % K! A4 r" U2 ?5 k, v# ?
chr(0x80 | ($intval & 0x3F));
1 t4 v$ T. D* P* o/ \% t }
6 l. H8 u0 i0 G1 @( w) S, x9 \}) F# v* z4 f1 b8 L/ o3 C1 V
|
|