该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数1 B; H8 c C6 T$ {( L H( M$ v6 _
1 D7 w" I+ }! P6 p X# M! nfunction uniencode(text)
$ h; P. t/ K* h2 ]3 x{ ' I6 v' z7 t- r) n" y
text = escape(text.toString()).replace(/\+/g, "%2B");
( Z2 W. q/ b) c! L, Q! {; p3 G var matches = text.match(/(%([0-9A-F]{2}))/gi);
4 P$ u; }) L9 {9 V/ l6 ^- P if (matches)
! {. Q4 d; T r {
4 U' a- V" q1 h for (var matchid = 0; matchid < matches.length; matchid++)
$ O1 Y) a6 X8 i7 h1 B { - P/ L, B3 B! w
var code = matches[matchid].substring(1,3);
/ d. z' j0 g$ R0 d3 K if (parseInt(code, 16) >= 128)
4 Z' h. a* a. i; h {
9 ?$ q1 o; q! [1 ]4 T text = text.replace(matches[matchid], '%u00' + code); & x4 }: k) S- z5 \6 Q
} , o' z+ t( V* P" K3 Q6 @1 i
}
& v1 ?. j" n+ k6 s }
" K e" e0 d/ k9 E text = text.replace('%25', '%u0025');
7 k9 G% Q( j2 s6 l
) G; q/ Q( E9 A, M8 \: p& Q return text; " z, R- z+ S% z) g
} ! P# g- v2 w( e! n }5 H- j
" Q; j# y8 `2 y
当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.6 I) A7 b; h% ]1 t$ N+ o# L
0 O$ e" [' ^$ K6 v" k+ K! nfunction convert_int_to_utf8($intval) 5 ^. A0 S* ~8 h
{
" L) z) Q6 ^1 I7 i ~" L8 k# C7 p $intvalintval = intval($intval);
+ u# j/ e" |" P3 y& d E switch ($intval) ) F% J7 F4 Z5 w5 x- E" e
{
5 U; n) m6 t8 b' T9 K: A9 O // 1 byte, 7 bits
4 y! Z6 ]' Z+ s! Y" J case 0: ' v$ h5 W2 y; W j
return chr(0); * ]% r3 H' T+ ?4 D/ I, H9 n
case ($intval & 0x7F):
# J. F! G- r: J return chr($intval);
* p0 g+ o' R6 F6 q6 N! t ) ^0 d4 L7 \8 I; X
// 2 bytes, 11 bits $ X: k2 z) U F2 q5 _7 T! g/ q! s
case ($intval & 0x7FF): ( v6 k$ f# P2 {& H! h s
return chr(0xC0 | (($intval >> 6) & 0x1F)) .
9 U% U# M( K- i* ^1 m& z chr(0x80 | ($intval & 0x3F)); , g2 {0 s3 N6 e+ C2 Q* e
! e X. F- ~3 A! | // 3 bytes, 16 bits @( W2 _6 R1 d: w$ N7 E/ t( b
case ($intval & 0xFFFF):
7 w% P: V/ L7 ]% W0 x# G) r+ |( C% d return chr(0xE0 | (($intval >> 12) & 0x0F)) .
. s9 o5 c7 F$ F, \" g& q7 T/ c chr(0x80 | (($intval >> 6) & 0x3F)) .
5 p* F' f+ X5 A9 a chr (0x80 | ($intval & 0x3F)); ' ]- Z- d. T; b- X& c# L) O7 `- g
$ Z: B" {8 h5 x8 s: i
// 4 bytes, 21 bits
) X3 H' f8 q7 o/ J case ($intval & 0x1FFFFF):
; n6 L; K7 U9 `, [6 c: y" d return chr(0xF0 | ($intval >> 18)) .
7 a6 {& y" Z1 l |0 Z2 Y" `* v$ R chr(0x80 | (($intval >> 12) & 0x3F)) . 3 i) u B( b" E# u% n6 H* t
chr(0x80 | (($intval >> 6) & 0x3F)) .
+ S* N& f1 V* U4 F+ M1 p# J) S chr(0x80 | ($intval & 0x3F)); 7 w0 L8 K S' f% q4 |4 w$ Q$ @
}
1 X* E& b/ M0 a' U}5 A- B' b- Q' B* }5 r0 F4 |
|
|