该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数5 A2 w6 [! B* d @/ R
/ t6 g, V+ u6 T" w* ]function uniencode(text)
* N @: [' P& z& y2 N' f{ : u6 }4 {9 R% n0 q- L
text = escape(text.toString()).replace(/\+/g, "%2B"); . z$ ]" E$ d: W2 L
var matches = text.match(/(%([0-9A-F]{2}))/gi);
/ z/ b: w+ B1 }0 J2 G! f if (matches)
+ k- b! X1 Z) M& \ J { - k& B& H: D$ Z, M# @ S6 V
for (var matchid = 0; matchid < matches.length; matchid++) 9 V. H" Y% _! s q, i
{ ) b$ |9 `, ^" x3 D( q( A
var code = matches[matchid].substring(1,3);
& K ]# v% ?; Q) X* `. k6 |1 x# G if (parseInt(code, 16) >= 128)
8 p3 U' |5 E6 K2 N2 Z { 7 W( {6 U+ B3 ~: N; P
text = text.replace(matches[matchid], '%u00' + code); , t2 M! {4 W" t1 C
} 3 B' Y2 Q; B! \/ H5 p- Q6 y6 |8 _: o
} 7 K5 F) ~. p( n( f
}
8 G4 b; }# A: r+ ?" {- h) R text = text.replace('%25', '%u0025'); 2 H0 _! [/ `6 i7 u/ i, p
$ H5 ^; G& W, |6 W0 V0 | return text;
' u- A3 h" ^6 W} ) Q1 s' k( n- C! k
% w b. f3 @! P5 H; r
当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.
Z1 C9 s9 l" ?, d
, K8 q; j8 R6 i ]8 jfunction convert_int_to_utf8($intval) / w" _! _; m B/ C( A
{
* I$ o* l/ r* \0 X6 I* O. T $intvalintval = intval($intval); 6 Y; _- J' f6 m
switch ($intval) , A; p. `, t, W$ G2 t; H
{ 7 p5 x4 `# y5 E4 i
// 1 byte, 7 bits
- G3 N& t3 m/ b* [4 [& a case 0: ; g4 P0 P8 @, q4 \. N
return chr(0); - J$ X& M6 f \5 n% `; |
case ($intval & 0x7F): 3 h: s, v7 V8 y9 i. f) z- ^9 ?
return chr($intval); $ ?2 L) R* f# `2 `% s4 l- t
$ S) _. \; q/ a5 J // 2 bytes, 11 bits
- l) p+ |. g5 Z& e$ P case ($intval & 0x7FF):
+ g& H2 K. a3 p4 ~3 K) ?' i return chr(0xC0 | (($intval >> 6) & 0x1F)) . 9 B1 \/ g% F4 ?6 ?5 K! B2 |$ q, h# n8 p5 |
chr(0x80 | ($intval & 0x3F)); U/ f4 t( u1 [( _) [1 H: |
; M/ Y, L: ~- R( ]: Z4 c // 3 bytes, 16 bits $ F4 r! t& i) K+ Z, N+ R' n6 o
case ($intval & 0xFFFF):
; f& E! U; ]# P" K% g3 I0 R return chr(0xE0 | (($intval >> 12) & 0x0F)) .
7 |) R& i7 G8 v6 Z( x2 b' D chr(0x80 | (($intval >> 6) & 0x3F)) . 1 f5 {/ V' [/ T% u# B8 ]: w
chr (0x80 | ($intval & 0x3F));
$ g& ]$ u; t2 r1 w# f
" H& C6 q0 q7 q$ z. X: R // 4 bytes, 21 bits ' y- l) I+ F% B, }) i7 @# U' H
case ($intval & 0x1FFFFF): ( Y7 ~, t. |$ f$ l2 |
return chr(0xF0 | ($intval >> 18)) . / m1 J' z$ n5 f
chr(0x80 | (($intval >> 12) & 0x3F)) .
) u2 i4 m' r( P: j( Y4 t+ H1 I chr(0x80 | (($intval >> 6) & 0x3F)) .
0 a. w9 j5 J. w; T: ~ |$ R. @ chr(0x80 | ($intval & 0x3F)); H F; [$ V; |4 u( W+ z [
}
; _4 N# F [! \, x}* S& u [7 Y i4 j
|
|