该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数
/ J) l8 K+ a+ u8 ? 3 r# m! X0 W: W) a2 `
function uniencode(text) ! w- B/ i# ?5 P8 N7 G
{
; ?) O" ]4 H$ L. |( ?0 ]; U' D text = escape(text.toString()).replace(/\+/g, "%2B"); . x7 |4 W: ?8 m. h
var matches = text.match(/(%([0-9A-F]{2}))/gi); & _4 E4 g7 E3 j5 G( N, c" Y8 P' b4 v
if (matches)
! R$ N8 A$ [9 C6 Y( @ { $ k6 }, [. E% G0 z* J
for (var matchid = 0; matchid < matches.length; matchid++)
9 J9 j0 x& G ?4 Z' I) N {
/ _. g5 j" u; t5 D9 u! q var code = matches[matchid].substring(1,3); + A! e2 d: A% i2 A8 n; `6 u' q5 w
if (parseInt(code, 16) >= 128) * }2 ^- ^3 x: H o
{ 7 I7 h& b D* k7 ^' [
text = text.replace(matches[matchid], '%u00' + code); : _. Q5 O7 s+ Q0 n0 J$ b' s# L& c
} 7 T4 a$ G9 v& n4 o7 D! g; q5 ?
}
$ u4 N4 I. c# _* H }
* _1 ^( o7 v F text = text.replace('%25', '%u0025');
4 ^/ I6 ?+ t9 ]# p V # ?1 N9 h: \3 ~' R( o) g
return text; 5 j0 A# h( P7 G0 B$ C
}
$ m. p8 [8 g8 n ( h4 n$ J3 m5 Q' E# I
当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.' [3 P$ l$ c; J6 z
/ c, {6 E1 T1 _function convert_int_to_utf8($intval)
2 I; V4 x1 ^+ J& V3 a2 f{ ( }% y* ]* B# W! M. Y1 b
$intvalintval = intval($intval); 7 z- ^ D8 b2 }- R% z2 |
switch ($intval)
: F2 }6 K1 U) i7 w3 D4 E3 I {
2 [7 y# @* I( ~" o8 Q // 1 byte, 7 bits ( Y [+ B6 V4 t! v
case 0:
5 f" Z% M2 L3 y- F; w return chr(0); # ]' i: C$ t: U/ N/ r$ ?" H, ~* F
case ($intval & 0x7F):
) ~& j6 O, ^" E( `# c$ q, V6 G# u; }0 ^. U return chr($intval); 1 c M( Z/ L& E2 O# H
( E9 x3 f6 S2 F/ s // 2 bytes, 11 bits
: D8 ^" f6 Y2 m( G/ b. Y case ($intval & 0x7FF): 4 o& N5 Q$ x. N- k* U) e1 ?- D3 e- n1 `
return chr(0xC0 | (($intval >> 6) & 0x1F)) . . l) P' F/ O0 l( }1 v
chr(0x80 | ($intval & 0x3F)); * q' x' Z0 L- s0 @- x( f# ?( u; `
) V/ j9 n, e' S b4 ` // 3 bytes, 16 bits 4 C0 m h3 \( \/ B+ [; _0 |
case ($intval & 0xFFFF):
7 P: [5 D/ m2 [. ]+ `% t& W return chr(0xE0 | (($intval >> 12) & 0x0F)) . ( }4 I4 \: ]6 w2 a- y1 P9 _
chr(0x80 | (($intval >> 6) & 0x3F)) . 9 M |6 I2 \ `& q3 I
chr (0x80 | ($intval & 0x3F)); , }6 h- T# p E" C$ S4 r
7 d) j& B, Q1 f9 {% e
// 4 bytes, 21 bits 5 Y% F4 w$ h# I- m) L- i
case ($intval & 0x1FFFFF):
/ P' j& F, B9 G0 n/ }7 X- I return chr(0xF0 | ($intval >> 18)) . 6 g) \) c8 T! S- B
chr(0x80 | (($intval >> 12) & 0x3F)) .
: V2 G3 p8 h3 t, j* G- K( n. @ chr(0x80 | (($intval >> 6) & 0x3F)) . 9 ]1 @1 u& P/ P) V9 Y
chr(0x80 | ($intval & 0x3F)); : m3 g# A0 R( ?3 s
} + b5 `8 g# [" J% l8 J6 S6 b) u
}
6 P1 }& Y, k9 n7 W! ? |
|