该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数
4 ]! E4 j' t2 d- s2 V. z, G8 p m0 l# J ; H) Q- p7 T' Y# C2 z' @% w
function uniencode(text) % f- {( w: F3 y7 x, g9 ~
{ 1 K7 { f# e9 {# b0 C
text = escape(text.toString()).replace(/\+/g, "%2B");
' V+ ~' c# w% @8 e var matches = text.match(/(%([0-9A-F]{2}))/gi); 8 J/ R; |. J+ L( _8 ` U0 b8 H Z' v: Z
if (matches)
* i# |/ z3 {& P2 R$ t { 0 ] d( c9 Q- a, S9 t$ L. `4 ?* C
for (var matchid = 0; matchid < matches.length; matchid++) & r4 ^+ \: I4 N4 G, @
{ ( f* L: F( e5 [( i$ h( M
var code = matches[matchid].substring(1,3);
9 j0 h$ G% s( d' @5 W( k if (parseInt(code, 16) >= 128)
+ X- V% [+ H% v {
; e4 U: e r5 D% \: {2 B' g6 y text = text.replace(matches[matchid], '%u00' + code);
# e& i* o5 \7 U" P4 m } 7 W* h& {/ W% x/ q+ \) n
} . J# i; B& r3 ^2 C* S; O
}
, U+ M7 b3 [# o' {/ V* Q- R text = text.replace('%25', '%u0025');
/ t( s$ ?6 Y) u g; G
- X0 c0 b) J+ O) _ return text;
# V) ^& }/ L. p* x2 p. o: d} $ X. {# g8 N8 A3 Z* Z( i! `
3 F4 T8 N$ F% Z, j2 e当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.2 B7 V0 E X& [ r, b& W q, S
# w) `: I, E. \& H5 b/ sfunction convert_int_to_utf8($intval) , h1 e0 G# ]$ ^6 n
{ ; ^# ?7 Y7 q# }( Y7 N" F
$intvalintval = intval($intval);
% n& {4 v9 b" \: i switch ($intval)
2 c F9 n6 ?! ~, ? {
) f: s; y+ ~3 r* T9 T% ~8 M // 1 byte, 7 bits
: i, a v( X$ G& K s6 C7 X4 b case 0: + s+ W# [4 ` N u: h" W u
return chr(0);
+ ]8 l7 u' z' n3 D$ R4 P case ($intval & 0x7F): & S7 |/ ~! `1 v# y! a
return chr($intval);
; x- J: ` `; B# g }- V5 K6 {4 |
// 2 bytes, 11 bits T% P% w( p1 v6 I1 ]
case ($intval & 0x7FF): ! c- ^: Z( x5 D* `# M: G
return chr(0xC0 | (($intval >> 6) & 0x1F)) .
+ D3 a% d1 h- ^8 l5 Z chr(0x80 | ($intval & 0x3F));
3 k/ u& a7 w* }6 @ N5 p4 ]5 ] ?/ N
// 3 bytes, 16 bits 9 q/ H- a h3 u0 m& d% g
case ($intval & 0xFFFF): + h' {9 d) E& E7 }
return chr(0xE0 | (($intval >> 12) & 0x0F)) .
7 K6 D) `, X6 { chr(0x80 | (($intval >> 6) & 0x3F)) .
% W( k, H7 q6 ] Y0 ] chr (0x80 | ($intval & 0x3F)); g$ v5 E/ l1 i# s3 I$ v
8 ?8 ]) C. |4 x2 T" T5 M! h
// 4 bytes, 21 bits
: o! I4 }9 l* m3 i9 K3 \& r8 u case ($intval & 0x1FFFFF): # u2 Y5 a( J5 \
return chr(0xF0 | ($intval >> 18)) . 3 j7 n0 U% q- V
chr(0x80 | (($intval >> 12) & 0x3F)) . ; y9 N, I# I. Q& u% F3 [. m1 c
chr(0x80 | (($intval >> 6) & 0x3F)) . ; V9 l! a( Q- C% B( n0 {
chr(0x80 | ($intval & 0x3F)); * ~2 ^: m- C: ?! Y
}
# Y/ z5 f7 R! j- p/ o}
: K( ~; {; U6 u0 H2 j |
|