该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数
7 N# d6 l o' C8 V, Z' a3 W' u
8 H5 ~* T" h1 S O- D Ifunction uniencode(text)
; W/ Z7 A- k4 [5 i{
; t9 `9 S" [( _ \0 c% H text = escape(text.toString()).replace(/\+/g, "%2B");
3 f; t9 J2 M9 Z& o var matches = text.match(/(%([0-9A-F]{2}))/gi);
( ~- J( _8 v6 J7 Z if (matches) 7 X4 U# ?5 e+ s# k$ d( b9 a8 Z
{ 7 T) X! }9 }0 B7 z
for (var matchid = 0; matchid < matches.length; matchid++) 5 S0 F1 [- G9 J0 x) P! S7 _% w1 {2 J
{
' h$ p$ @: Z' d( L; _4 f' @ var code = matches[matchid].substring(1,3); # W% l+ A6 Z( i# ^4 T8 C" J R
if (parseInt(code, 16) >= 128)
, ]/ {# [( s r, U% d% d j { $ f& @ r, b3 n& _4 c {
text = text.replace(matches[matchid], '%u00' + code); 8 B1 l* r; V: ^6 P
}
; i; \6 U$ T$ g% _5 Z7 k }
& k# l$ V3 W) G. S R, h }
! M9 X+ [& k, d text = text.replace('%25', '%u0025');
- F1 }- V* a% e, T' M# a+ k - a+ H# d' p& ` E) C
return text;
) {! e4 ] I: @}
" P# \0 d1 z, {0 I) ^
! U7 L$ A' R6 v/ t) I, X4 w. v+ ^当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.
, v& L- T" y- L. l. u) i! ?
# W. j( {# X( Y( u+ j" N$ rfunction convert_int_to_utf8($intval)
9 R; n5 u E4 K6 t2 `8 n{ : F2 m3 O( c' j
$intvalintval = intval($intval); ! e: M, q5 Z9 N G. v; A( y' w
switch ($intval)
& o) s! a0 V! R { 0 ^7 v% ^/ z' w2 Y( ^
// 1 byte, 7 bits
( n9 E( D* ]+ R" C. v0 y# o9 V% I case 0:
4 u# k( H4 V5 M. ] return chr(0); # k6 }! o$ t' v) B5 V* q1 u: w
case ($intval & 0x7F):
5 |2 p$ r6 P# I, M return chr($intval);
9 x2 a9 } p" g( G$ {% ]% o( n p# Q9 P S4 V+ d% R. j6 l3 r
// 2 bytes, 11 bits
% H* l$ @. W" s; f( F! L ~" f9 B case ($intval & 0x7FF): 4 X4 C0 R* `7 h) y- v
return chr(0xC0 | (($intval >> 6) & 0x1F)) . : F; y, K5 y+ M+ P! n
chr(0x80 | ($intval & 0x3F)); 6 h' R. U" S( d D% n4 l" f
& \: T3 i: u! ~( ?& j
// 3 bytes, 16 bits 5 {2 N! O" h& ?! W
case ($intval & 0xFFFF): 1 h5 @8 S- M1 s
return chr(0xE0 | (($intval >> 12) & 0x0F)) . % @/ ?( y4 B" m. r% s
chr(0x80 | (($intval >> 6) & 0x3F)) .
) q% t/ v3 N! U u# [# l2 ~ chr (0x80 | ($intval & 0x3F)); . h, O8 A- H5 Z
% t% Y5 t8 c9 b: N1 }2 l9 J6 e5 L( C
// 4 bytes, 21 bits ! w" B! i* M; c6 P; a8 ^; o
case ($intval & 0x1FFFFF):
2 B4 x ]; V B7 {2 D, [ return chr(0xF0 | ($intval >> 18)) . " G- E" ~0 E, ?0 W5 q
chr(0x80 | (($intval >> 12) & 0x3F)) . $ i1 `; n1 o6 q* X/ W( r: C- C5 l
chr(0x80 | (($intval >> 6) & 0x3F)) .
; `: J1 ] h$ G4 O0 K9 X chr(0x80 | ($intval & 0x3F)); ; u# y2 X8 b9 @
} . F! k- ]% D) A2 V! M* i
}
* |) | @, {4 r6 K( z. y. {8 S |
|