奇怪的回车换行问题
进行保存时候,发现发送到服务器的编码是这样的: catdesc=%E6%9E%97%0A%0A%E5%B0%910A%0A%0Aa%E5%8D%8E 注意其中的红色标记的%0A,这是
的编码。
的编码竟然不见了。 然后我如果采用form submit直接提交,却发现编码是: %E6%9E%97%0D%0A%0D%0A%E5%B0%91%0D%0A%0D%0A%0D%0Aa%E5%8D%8E 发现
(%0D)的编码是在的。 (以上为在IE9中测试结果。) 难道是ExtJs的问题? 如果分析Extjs的源代码,找到取form值得地方。如下: 可以发现extjs采用的是js中的encodeURIComponent函数进行值的编码。 难道是encodeURIComponent的问题? 搜索网络,发现一篇博文中提到这个问题,见http://www.yeahxj.com/2011/11/07/enter-code-for-all-browser/ (回车符
在各个浏览器中无耻的表现) 于是我在ie6,ie8,ie9中分别进行了测试,发现果然存在这个问题。 总结: 这个问题虽然小,但是在某些场合却会让人和头痛,这也是搞计算机程序设计人员的悲哀,大量的不兼容,造成很多程序出现各种各样奇怪的问题。例如这个小问题可能造成一个结果,例如,我这个程序,需要在前台显示内容的时候保留回车换行。这种一般有两种处理方法,一种是采用<pre>标签,但是这个标签用起来很不方便的,尝试发现格式变化不太好控制。另外一种方法就是将回车换行变为<br />标记。我就是采用的这种方法,刚开始我写的正规表达式是/
/,结果发现什么都没匹配到,后面我就改成/[
]/但是这种造成的问题就是在ie6,7,8中将会多出一行来。最后为了统一处理,我改为先替换/
/组合,然后再替换/
/。问题得到解决。 ** 本人原创文章,转摘请保留本段内容,万分感谢! ** microdreamsoft(Lin Shaohua): ** 由于本人水平有限,欢迎各位高手指正。