`

关于<textarea>中的“回车”在后台,mysql数据库,html和<textarea>中的显示问题总结

 
阅读更多

       当然不得不说这是一个被问烂的问题,可是被问烂那说明这个问题经常出现。度娘的结果却是是五花八门,有采用类似Fckeditor Ckeditor,和百度的 Ueditor. 这样的网页文本格式编辑器插件的,我也用过一个,不过对于小型项目来说太烦,把js的包加载进去启动项目时非常耗时;当然也有很多就用textarea的,还有用divcontentable属性让div可以编辑的。。。不能说错,但用在自己身上总有不对的地方。之后的还得自己慢慢调试!

     首先解释一下在不同的区域他们现实的不同格式吧。当然本篇先仅讨论“回车”这个字符。

1.在<textarea>中,“回车”(实际意义是换行)这一字符是"\n",如果存在”<br/>“,在其中也显示为”<br/>“,我猜想”\r\n“也显示为换行;

 

2.在mysql数据库中可以存放很多种"回车",但是“回车”代表了不同的含义,一个是换行,一个就是回车本身。如果你将带有换行的文本复制到数据库中,你可以明显的看出是有换行的一个特点的。

,在数据库中换行是\r\n,当然你存的时候是,取出来也是。

 

3.html中“回车“,是换行符”<br/>"

 

4.在td中的title中,如果设置了值,它的换行是“\r\n”,回车是“\n

 

5.最后的重点是java后台:

       在传到后台的时候呢,我用一个输出ASCII码的方法输出了“回车”,然而并没有什么卵用。但是后来我发现不是后台无法输出的问题,而是在前台传递参数时用的是get方式,如果使用post,这些格式是都可以传过来的。再次尝试发现“回车”这个字符在java后台中输出是一个“”+“13”+“10"。对照ASCII码表,由于一些符号是不允许输出的所以“”代表了,"13"代表的是回车符,"10"代表的是换行符。所以显而易见,如果使用post方式,传到后台,存入数据库都没有问题。但是在html中就有问题。

 

解决方法就很明显:

最简单的方式就是用post传递方式,在textarea不会存在问题,但是在html中显示会存在没有换行的问题。

空格也将会只显示一个" ",度娘的结果很少说用post传参,只有一些大神直接说了句,”传递的是什么,后台拿到的就是什么呀“,回答了等于没回答。。。。。PS:后补部分:之后发现,只要在html中显示的地方,只要将数据库中的数据直接放在<pre></pre>标签中。即可显示正常。

pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。

<pre> 标签的一个常见应用就是用来表示计算机的源代码。

提示:制表符(tab)在 <pre> 标签定义的块当中可以起到应有的作用,每个制表符占据 8 个字符的位置。但是我们不推荐使用它,因为在不同的浏览器中,Tab 的实现各不相同。在用 <pre> 标签格式化的文档段中使用空格,可以确保文本正确的水平位置。

提示:如果您希望使用 <pre> 标签来定义计算机源代码,比如 HTML 源代码,请使用符号实体来表示特殊字符,比如 "&lt;" 代表 "<","&gt;" 代表 ">","&amp;" 代表 "&"。

 或者采用评论区的网友给的:在显示时,给显示数据套上一个<div>,然后设置style的white-space: pre-wrap。效果类似与上述的pre标签,非常感谢。

这里再补充一下,由于回车是一个换行的标识,那么数据在标签中也必须应该有自动换行的效果,而不会撑爆一个div或者其他容器,这里就要对容器设置style中的width:600px;,同时还有WORD-WRAP: break-word;这个属性值,那么数据到达宽度长度时就会自动换行,测试时建议不要使用连续的字母和数字,因为没有空格,就被认定为是一个单词,这样 换行就会出现 提前换行的效果。这也是我们不愿意看到的。

我觉得最好的方式是修改格式,存入数据库时,"\n"换行全部替换为"<br/>",这样的好处是,如果有其他人做前台显示时,放在html中就可以直接显示,不会出现格式问题。

修改显示方式也很麻烦,如下:

1.在前台用get方式传递回车时,需要把content内容中的“\n”替换为“<br/>”或者"<br>";

while(-1!=content.indexOf("\n"))
{
   content = content.replace("\n","<br/>");
<}

 2.在前台需要编辑修改content内容时,后台从数据中取后要将相反操作,即将“<br/>”或者"<br>"替换为”\n”:

content =content.replace("<br/>", "\n");

 content同样放在<textarea>中。

3.当然也可以放入<textarea>中显示,但是最好设置<textarea>disabledisable;

4.如果是在html中显示的话,那么就不需要做任何处理,直接获取就可以了,其中的"<br/>"在html中就自然的是换行的行为。

 

 

 

写的比较仓促,也许有很多错误,或者错乱的地方。发现有问题可以留言给我。。。。工作如狗啊。后期还会修改。

 

11
5
分享到:
评论
2 楼 li370604005 2015-06-24  
酷的飞上天空 写道
富文本编辑器里面的换号不错考虑,提交到后台基本不是br就是p
仅使用textarea的情况下,在显示的界面给父级div设置一个熟悉就解决了,
属性如下:
white-space: pre-wrap

我没用div直接写在了<pre>标签里。今天同事在网上找了CSS,就是你说的这个方法,但是前提是让我把存在数据库中的<br>都换成了<p><p/>
1 楼 酷的飞上天空 2015-06-19  
富文本编辑器里面的换号不错考虑,提交到后台基本不是br就是p
仅使用textarea的情况下,在显示的界面给父级div设置一个熟悉就解决了,
属性如下:
white-space: pre-wrap

相关推荐

    浅谈mysql数据库中的换行符与textarea中的换行符

    在IT领域,尤其是在数据库管理和Web开发中,对字符编码的理解是至关重要的,因为这直接影响到数据的存储和显示。本文将深入探讨MySQL数据库中的换行符以及与HTML文本区域(textarea)中的换行符的区别,并讲解如何在...

    MySQL数据中很多换行符和回车符的解决方法

    我到公司后先测试一下客户给我的错误示例(果然搜不到),然后排查一下昨天的数据是否有问题,发现昨天客户用excel导入的数据中,存在很多\r\n这种换行符和回车符。 如:库中数据为:“换行符\n换行符\n换行符”,...

    php将textarea数据提交到mysql出现很多空格的解决方法

    这通常是因为在HTML页面上,开发者可能没有注意到`&lt;textarea&gt;`元素中的文本直接换行或者在换行时输入了不可见的换行符`\r\n`(回车换行符),而这些换行符在提交到MySQL数据库时会被自动转换为普通的空格。...

    2021-2022计算机二级等级考试试题及答案No.10816.docx

    **知识点说明**:HTML中的`&lt;ol&gt;`标签用于创建有序列表(即带编号的列表)。 **题目分析**:选项中,`&lt;textarea&gt;`用于创建多行文本输入框;`&lt;input type="textarea"&gt;`和`&lt;input type="textbox"&gt;`语法错误;`&lt;input ...

    2021-2022计算机二级等级考试试题及答案No.11934.docx

    因此,选项C`&lt;textarea&gt;`是正确的。 #### 20. Word文档边界调整 - **知识点**: 调整Word文档的左右边界。 - **解析**: 通过调整标尺上的左、右缩进游标,可以直接且快速地改变文档的边界。这是一个正确的陈述。 #...

    2021-2022计算机二级等级考试试题及答案No.13540.docx

    - 文本区域(如`&lt;textarea&gt;`)中的内容发生变化。 - 下拉列表(如`&lt;select&gt;`)的选择项发生变化。 - 单选按钮或复选框的状态发生变化。 ### Windows任务栏配置 - 为了确保任务栏始终可见,可以在“任务栏属性”...

    2021-2022计算机二级等级考试试题及答案No.15745.docx

    根据提供的文档内容,我们可以总结出一系列关于计算机二级等级考试的关键知识点。这些知识点涵盖了软件调试技术、数据结构与算法、办公软件应用、编程基础、数据库管理等多个方面。下面将逐一进行详细解析。 ### ...

Global site tag (gtag.js) - Google Analytics