该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数
( P9 B/ s- M3 D* s) u" {2 f* k ! Z. k: D) A0 G2 z9 m& @
function uniencode(text) % V. D" u2 H1 b1 i! T5 E5 g4 W
{
4 o# I# A' b! m text = escape(text.toString()).replace(/\+/g, "%2B"); + B7 e7 D- b( S1 m) h1 A y
var matches = text.match(/(%([0-9A-F]{2}))/gi);
# W1 x& ~$ Z" G1 } if (matches)
x" n5 _! j q { 2 U! A, x9 b% s) D
for (var matchid = 0; matchid < matches.length; matchid++)
7 F/ U% u) r; _$ u { ) m; p/ R) p4 }0 h& _. q7 w
var code = matches[matchid].substring(1,3); + i; k) E( _9 P. I& B: i+ k5 |1 U s
if (parseInt(code, 16) >= 128)
/ K5 X- H3 B; E4 G2 U- y {
9 [8 c# C# }3 b8 X text = text.replace(matches[matchid], '%u00' + code);
- F, M2 D0 h G, I9 Q }
! Y3 z7 w' O4 Q. X; z3 ^2 n3 t, H! n }
9 c7 O4 {0 |! | }
- A- ]3 ?0 h N" A0 s c" u text = text.replace('%25', '%u0025');
) O" U1 o+ {& g. M
. m9 r# z3 `9 c: F8 j! C6 L return text; " X1 h1 m1 Y- O, b7 Y
} + ^, ?9 O8 M, f
_+ c1 G: G+ T% L9 \9 W8 C当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.
$ R6 B1 o6 o! |8 ?" x1 L) d* { ! \3 k- [# Y9 x
function convert_int_to_utf8($intval) 8 {5 M4 E2 R5 U7 b' D
{
( r3 G' v5 u' }; w4 b $intvalintval = intval($intval); ) i- P4 t% \4 U1 @9 t, I+ c
switch ($intval)
1 P- h* d9 c! x7 }- f7 f3 k {
: t R" _. U4 _' z // 1 byte, 7 bits z; e( O: j$ C3 }7 v8 q$ Q
case 0:
7 c8 ]* v) {9 q% ^& _+ c" L return chr(0); 9 z W& E5 T# D* N
case ($intval & 0x7F): ( a7 v; q3 x# r% `& M
return chr($intval); * d1 z4 c/ w3 f7 P, N0 Y
! y) R7 g( y. n r
// 2 bytes, 11 bits + R q: o/ c; y% k4 |$ t
case ($intval & 0x7FF):
6 G$ f* y) T, q7 n5 ~# R, Z return chr(0xC0 | (($intval >> 6) & 0x1F)) .
7 T' \. r9 k& a: j6 M chr(0x80 | ($intval & 0x3F));
1 e) h$ T" q. V" ^
/ T7 d3 Y8 W" g) k // 3 bytes, 16 bits 3 [8 i- D8 V% T# T |1 j
case ($intval & 0xFFFF):
: E( Y2 H9 V( P; ^8 y return chr(0xE0 | (($intval >> 12) & 0x0F)) .
! r/ I7 v$ Q& k8 v chr(0x80 | (($intval >> 6) & 0x3F)) . - H) z9 Y3 u& ?7 |4 M: \
chr (0x80 | ($intval & 0x3F));
6 c/ @! x. P' t9 M/ M6 U
j9 Y0 `9 {, }: T // 4 bytes, 21 bits
3 k3 A1 P9 s2 ^# Z2 j1 o, r5 E case ($intval & 0x1FFFFF): " S. C% w; Q' @
return chr(0xF0 | ($intval >> 18)) . . M: @* t. M# w3 g" W/ z5 N1 u1 b
chr(0x80 | (($intval >> 12) & 0x3F)) . 1 P4 w' `6 U* J; c, |, ?* a; \8 C+ s
chr(0x80 | (($intval >> 6) & 0x3F)) . 5 Z/ v1 G9 ]6 y) `- H
chr(0x80 | ($intval & 0x3F)); 2 c- q+ `5 ?; ^" Z0 W: Q% d2 |) x
} $ D* [; T! \4 H- s3 O- v1 E7 l
}! i$ j& [5 d; b% C: l# H3 \5 l
|
|