不同浏览器对于textarea中换行符的处理
不同浏览器对于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,表示回车
参考: