为什么<textarea>显示&lt;&gt;而不是&lt;&gt;?</textarea>

时间:2011-09-21 03:15:59

标签: html encoding character-encoding html-entities

浏览器的textarea不应该显示原始文本吗?查看this post中的以下快照,并注意<script>标记:

1-我们可以看到脚本字周围的斜角括号:

We can see the angled brackets around the script word

2-现在看一下页面的来源。我们可以看到有角度的括号由它们的HTML实体表示:

We can see the angled brackets are represented by their HTML entities

3-点击编辑帖子,你会看到有角度的括号在textarea中可见 - 而不是他们的HTML实体:

We can see the angled brackets are visible in the textarea--NOT their HTML entities

4-查看服务器的XHR响应(当我们点击编辑时),我们可以看到HTML实体,而不是我们在textarea中看到的斜角括号:

We can see the HTML entities and NOT the angled brackets we see in the textarea

在编辑帖子时,textarea怎么可能显示有角度的括号而不是HTML实体? textareas不应该显示原始文本吗?我在我的网站上试过这个,textarea显示的是HTML实体,而不是括号,但源代码相同。

即使页面位于codepre标记内,帖子页面也会显示有角度的括号。它们不应该作为原始文本输出吗?我也在我的网站上尝试了这个,页面显示的是HTML实体,而不是斜角括号。

我在这里缺少什么?

我问因为在我的网站上实施功能而苦苦挣扎。我想在编辑实体时向人们展示编码实体,但我想存储一个原始版本。所以似乎已经做了,但我不知道如何。

1 个答案:

答案 0 :(得分:4)

请参阅Character Data and Markup并在HTML中考虑CDATA sections(请查看DTD,但请注意,它不足以完全描述HTML。)

script(和style)元素具有CDATA标识,而textarea则没有。将数据存储为“(未转义”),但要确保在HTML中的CDATA部分之外进行HTML编码(甚至在内部,注意防范</anything之类的终结符 - <和必须将/个字符分隔为完全合法的HTML格式。有关更多详细信息,请参阅CDATA vs PCDATA

快乐的编码。