该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数7 I$ x4 {1 z( j% a2 b# X
1 y' A# I9 a/ w3 r% ?& i! u
function uniencode(text)
, S. o8 x; w; H( m) ^6 L2 |0 i* g{ - q% z' `0 \$ _7 F6 S1 d- X
text = escape(text.toString()).replace(/\+/g, "%2B"); ! Y& c E. S5 v6 E! L( d0 U
var matches = text.match(/(%([0-9A-F]{2}))/gi); 4 z! u9 J. ]8 \
if (matches)
5 M2 D; G4 w- G. L$ c1 l. w1 y {
# j# r. ]0 x; z; K# U) v, [5 b for (var matchid = 0; matchid < matches.length; matchid++)
# t9 q7 T# I3 j" f' S {
, x# p6 P+ b5 D0 o4 d3 [) J+ P; g var code = matches[matchid].substring(1,3); 4 s8 X3 X; R% e
if (parseInt(code, 16) >= 128) % Z1 k. d2 L. g
{
) Z' z; b, c; ^) T6 T4 x- y text = text.replace(matches[matchid], '%u00' + code);
2 [% L" ^: G) A' ~* |7 t6 y }
% x% ]6 {- \; P/ E }
/ ` J/ P" c# v } 7 A& C9 h7 W5 F* y/ [2 {# P. B0 E
text = text.replace('%25', '%u0025'); ' C* x* k+ X6 J8 D" e/ o4 |
% P( o: m& m& ^" B0 ?/ y9 O
return text;
4 g6 H- b+ s3 L1 ~4 L. u} ! ` H7 S" o( |) g1 q/ J
2 Q9 l9 ?* _% y! z3 n1 h9 |当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码. z6 F; f3 w2 F* o6 U
; z6 _, _5 I& sfunction convert_int_to_utf8($intval) + q; \; a: G' D8 D9 P" R
{
% E- X+ }: \- o! D3 s- G w $intvalintval = intval($intval); 4 {( a9 r% n! D
switch ($intval)
0 ]* V+ @- g P6 x {
; W7 f Z* D p V2 `" W // 1 byte, 7 bits 0 d3 {+ m$ f* T( e% A$ |
case 0: , U U4 f- W3 w4 N
return chr(0); - f' [8 ]5 v( E5 E4 y* N
case ($intval & 0x7F):
) H+ N& s0 c: ? return chr($intval);
3 K7 B: X: k. B* i- h, A" M, Y ^ 0 K+ }& ^5 V& r: z* Q
// 2 bytes, 11 bits
3 a* O( D4 [3 {: n' ?; K8 s case ($intval & 0x7FF): " z+ c/ L5 h* t# y" M/ l5 q5 E1 ?
return chr(0xC0 | (($intval >> 6) & 0x1F)) . " W9 l0 w( K2 Q+ V0 O8 Q
chr(0x80 | ($intval & 0x3F));
. y: k; h4 p' B: v0 M+ u/ V
- _2 I; [$ _. o# v/ ? // 3 bytes, 16 bits
" s9 N- Z# X+ l2 c case ($intval & 0xFFFF):
; Y, i$ Q8 f, A- j1 n return chr(0xE0 | (($intval >> 12) & 0x0F)) . ' f# Z6 h6 q& P
chr(0x80 | (($intval >> 6) & 0x3F)) .
& q P; w$ Q; G chr (0x80 | ($intval & 0x3F)); 2 K# f* c7 I) Y; P2 @0 X( D% n/ W0 {
# o: D7 J- [6 X
// 4 bytes, 21 bits 8 S" {5 @+ y1 i1 R7 t( N4 B/ w
case ($intval & 0x1FFFFF): , k; |* |( ?7 J0 d3 C( V( s. s/ C# d
return chr(0xF0 | ($intval >> 18)) . 3 z* D& D: l6 G' R% R5 L4 ?
chr(0x80 | (($intval >> 12) & 0x3F)) . ) ?" ?+ s c; @" V' @3 p
chr(0x80 | (($intval >> 6) & 0x3F)) .
: E& s8 t1 @$ W- W6 ~, y# U chr(0x80 | ($intval & 0x3F));
/ J% W* s. G6 t7 c4 ^ }
?+ P# B- m% v. x}
& L# ], S( W1 `" A l |
|