不同浏览器对于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
|
0NUL
|
16 DLE
|
32SP
|
480
|
64@
|
80P
|
96 `
|
112p
| |
0X1
|
0001
|
1 SOH
|
17 DC1
|
33!
|
491
|
65A
|
81Q
|
97a
|
113q
| |
0X2
|
0010
|
2 STX
|
18 DC2
|
34"
|
502
|
66B
|
82R
|
98 b
|
114r
| |
0X3
|
0011
|
3ETX
|
19 DC3
|
35#
|
513
|
67C
|
83S
|
99 c
|
115s
| |
0X4
|
0100
|
4 EOT
|
20 DC4
|
36$
|
524
|
68D
|
84T
|
100d
|
116t
| |
0X5
|
0101
|
5 ENQ
|
21 NAK
|
37%
|
535
|
69E
|
85U
|
101e
|
117u
| |
0X6
|
0110
|
6 ACK
|
22 SYN
|
38&
|
546
|
70F
|
86V
|
102f
|
118v
| |
0X7
|
0111
|
7BEL
|
23 ETB
|
39'
|
557
|
71G
|
87W
|
103g
|
119w
| |
0X8
|
1000
|
8BS
|
24 CAN
|
40(
|
568
|
72H
|
88X
|
104h
|
120x
| |
0X9
|
1001
|
9HT
|
25 EM
|
41)
|
579
|
73I
|
89Y
|
105i
|
121y
| |
0XA
|
1010
|
10LF
|
26 SUB
|
42*
|
58:
|
74J
|
90Z
|
106j
|
122z
| |
0XB
|
1011
|
11 VT
|
27ESC
|
43+
|
59 ;
|
75K
|
91[
|
107k
|
123{
| |
0XC
|
1100
|
12 FF
|
28 FS
|
44,
|
60 <
|
76L
|
92\
|
108l
|
124|
| |
0XD
|
1101
|
13CR
|
29 GS
|
45-
|
61=
|
77M
|
93]
|
109m
|
125}
| |
0XE
|
1110
|
14 SO
|
30 RS
|
46.
|
62>
|
78N
|
94^
|
110n
|
126~
| |
0XF
|
1111
|
15 SI
|
31 US
|
47/
|
63?
|
79O
|
95_
|
111o
|
127DEL
|
如:
\r对应的ASCII码为10,表示换行
\n对应的ASCII码为13,表示回车