不同浏览器对于textarea中换行符的处理
今天在做一些表单提交,涉及到textarea中的换行,因为填入的内容是Base64编码之后的结果(规范规定,Base64编码结果中每76个字符需要加上一个回车换行,即一个"/r/n"),在IE下测试,一切OK,但是到了Firefox和谷歌浏览器下,总是提示错误,细查一下,发现不同浏览器对于换行符处理不同造成的。-
在IE下,换行符传入/r/n
-
在Firefox和谷歌浏览器下,换行符只传入了/n
因为后台程序默认是按照/r/n处理的,所以字符串就不匹配了。
解决办法:如果发现传入的字符串只有/n,没有/r/n,则用正则表达式将/n替换成/r/n,然后再进行业务处理即可。
附:ASCII表
十六进制 |
高三位 |
0X0 |
0X1 |
0X2 |
0X3 |
0X4 |
0X5 |
0X6 |
0X7 |
|
二进制 |
000 |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
||
低四位 |
||||||||||
0X0 |
0000 |
0 NUL |
16 DLE |
32 SP |
48 0 |
64 @ |
80 P |
96 ` |
112 p |
|
0X1 |
0001 |
1 SOH |
17 DC1 |
33 ! |
49 1 |
65 A |
81 Q |
97 a |
113 q |
|
0X2 |
0010 |
2 STX |
18 DC2 |
34 " |
50 2 |
66 B |
82 R |
98 b |
114 r |
|
0X3 |
0011 |
3 ETX |
19 DC3 |
35 # |
51 3 |
67 C |
83 S |
99 c |
115 s |
|
0X4 |
0100 |
4 EOT |
20 DC4 |
36 $ |
52 4 |
68 D |
84 T |
100 d |
116 t |
|
0X5 |
0101 |
5 ENQ |
21 NAK |
37 % |
53 5 |
69 E |
85 U |
101 e |
117 u |
|
0X6 |
0110 |
6 ACK |
22 SYN |
38 & |
54 6 |
70 F |
86 V |
102 f |
118 v |
|
0X7 |
0111 |
7 BEL |
23 ETB |
39 ' |
55 7 |
71 G |
87 W |
103 g |
119 w |
|
0X8 |
1000 |
8 BS |
24 CAN |
40 ( |
56 8 |
72 H |
88 X |
104 h |
120 x |
|
0X9 |
1001 |
9 HT |
25 EM |
41 ) |
57 9 |
73 I |
89 Y |
105 i |
121 y |
|
0XA |
1010 |
10 LF |
26 SUB |
42 * |
58 : |
74 J |
90 Z |
106 j |
122 z |
|
0XB |
1011 |
11 VT |
27 ESC |
43 + |
59 ; |
75 K |
91 [ |
107 k |
123 { |
|
0XC |
1100 |
12 FF |
28 FS |
44 , |
60 < |
76 L |
92 / |
108 l |
124 | |
|
0XD |
1101 |
13 CR |
29 GS |
45 - |
61 = |
77 M |
93 ] |
109 m |
125 } |
|
0XE |
1110 |
14 SO |
30 RS |
46 . |
62 > |
78 N |
94 ^ |
110 n |
126 ~ |
|
0XF |
1111 |
15 SI |
31 US |
47 / |
63 ? |
79 O |
95 _ |
111 o |
127 DEL |
如:
/r对应的ASCII码为10,表示换行
/n对应的ASCII码为13,表示回车
参考: