该用户从未签到
|
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数
; J0 m' X1 _/ L, m1 J7 q 4 C7 N& X4 c$ l: q6 ~
function uniencode(text)
( y3 [, G* h7 W: H5 |{ ' `% M d* \9 U: l' B1 \
text = escape(text.toString()).replace(/\+/g, "%2B");
C2 b& U, _+ y! I- |: p/ i- l var matches = text.match(/(%([0-9A-F]{2}))/gi); , ~+ W& Y% r1 o' T
if (matches)
- ~$ |: I d( y x {
8 }- E/ W, e8 X% } for (var matchid = 0; matchid < matches.length; matchid++)
1 ~& U( W! ]( j' @ e! D) c {
2 l, K# ~: F8 t- g0 z: d0 b% W var code = matches[matchid].substring(1,3);
: g* ~$ F7 n3 e if (parseInt(code, 16) >= 128)
3 } R$ n1 `& S- d& ^- \# ` { / E+ f) ]) k! k7 w$ {
text = text.replace(matches[matchid], '%u00' + code); - p! b3 r1 G. V
} 4 y1 `6 u* \7 t8 ?+ R a9 K ?" Z
} $ b* p5 [1 q o- H
} " x1 L7 C6 G1 ?2 i8 m" S4 T
text = text.replace('%25', '%u0025'); 9 S4 e/ V, N i0 P
! _; H" I) e( q/ M8 l7 o% } return text;
5 u- h+ @5 s, W) S6 f/ Z} 7 W3 C* G; \+ a
2 u" h; v. G; T8 R/ Q6 s* {当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码. ]8 t. o5 g1 @9 R/ _
% u- [. K/ W Q* [0 ~; Y! j* q7 y
function convert_int_to_utf8($intval)
, Z; [, `" t* U! P{
. ~' y! g* P) S2 J+ v+ | $intvalintval = intval($intval); 2 [0 h# X- o! Y
switch ($intval)
}# W! o# a a; U# P1 x( g, t) q% y { 3 G8 D+ Q3 s9 W
// 1 byte, 7 bits - K0 T# `4 {: @7 x. Z% K: F) P
case 0:
# V( j R8 ]3 f7 Y9 A return chr(0); & E1 f2 N( c W: A
case ($intval & 0x7F):
& w" _7 r8 C* Y& t+ u( P return chr($intval); ) G+ H8 F7 T; v O
, r" F- n/ s r% ^5 u // 2 bytes, 11 bits
* l3 V; d U) H, ]2 k7 G; `( T case ($intval & 0x7FF):
6 y+ _3 O* }. G5 _ l2 y0 W) m8 c return chr(0xC0 | (($intval >> 6) & 0x1F)) . w& w& e5 m+ s# @9 C
chr(0x80 | ($intval & 0x3F)); 7 h& @ U$ o, Q9 M
8 z' \5 W2 _2 z0 q, e
// 3 bytes, 16 bits
* P4 \, e9 s/ R6 ` case ($intval & 0xFFFF):
7 i5 ?0 M- h; d: y+ l1 R0 x return chr(0xE0 | (($intval >> 12) & 0x0F)) .
, E( }: u) \8 | S' L chr(0x80 | (($intval >> 6) & 0x3F)) .
! G, p1 |/ A7 c chr (0x80 | ($intval & 0x3F)); # Y; E% G6 }' H4 i# d3 e! z/ O
% I$ j4 v3 \' J3 M // 4 bytes, 21 bits - T) {' R, H8 X1 d: G. G
case ($intval & 0x1FFFFF):
: C6 p" U; P! E4 y( E return chr(0xF0 | ($intval >> 18)) . % u% J( l7 B/ Z7 Z, E5 c( A( `
chr(0x80 | (($intval >> 12) & 0x3F)) . 4 n/ o( }1 N! d
chr(0x80 | (($intval >> 6) & 0x3F)) .
0 V1 a6 B1 B4 R6 L5 |' F chr(0x80 | ($intval & 0x3F));
9 M/ _8 {5 F# c8 g9 S* F }
8 T8 q8 n4 |% o5 @9 f/ s/ Y9 ]9 U}. w% E" k! R9 L9 k! j. [( G" z
|
|