如何在<pre>标签内转义"<"和">"字符

102

我想写一篇博客文章,其中包含在<pre>标签中的代码段。该代码段包括一个泛型类型,并使用<>来定义该类型。代码段如下所示:

<pre>
    PrimeCalc calc = new PrimeCalc();
    Func<int, int> del = calc.GetNextPrime;
</pre>

生成的 HTML 会去掉 <>,最终呈现如下:

PrimeCalc calc = new PrimeCalc();
Func del = calc.GetNextPrime;

我该如何转义HTML代码中的<>标签,让它们正常显示在网页中?

4
&lt;&gt;是HTML中的特殊字符实体,分别代表小于号(<)和大于号(>)。 - Alan Dong
2
你可以使用在线格式化工具:https://www.freeformatter.com/html-escape.html - kaore
术语是“HTML编码”,也称为“HTML转义”。在ASP.NET中,您可以这样做:System.Net.WebUtility.HtmlEncode("<h1>Your HTML here</h1>") - undefined
8个回答

125
<pre>
    PrimeCalc calc = new PrimeCalc();
    Func&lt;int, int&gt; del = calc.GetNextPrime;
</pre>

19
我感到遗憾,目前还没有为此引入技术。 - Sathish Kumar k k
1
当然,和尖括号一样,&符号也需要在同一上下文中进行引用,因此如果'<'和'>'需要HTML实体,则使用'&'是否有用并不确定。 - Astara
@EmreBener 它确实存在;这个元素是在HTML 2中引入的,并在HTML 3.2(1997年)中成为标准。http://www.martinrinehart.com/frontend-engineering/engineers/html/html-tag-history.html - undefined

22
<pre>&gt;</pre>
>
所以你想要:
>
<pre>
    PrimeCalc calc = new PrimeCalc();
    Func&lt;int, int&gt; del = calc.GetNextPrime;
</pre>
PrimeCalc calc = new PrimeCalc();
Func<int, int> del = calc.GetNextPrime;

17

使用&lt;&gt;来代替html中的<>


8

&lt;&gt;分别表示小于号和大于号。


7
如何考虑:
&lt; and &gt;

希望这能帮到你?

3

如果遇到类似 rp所说 的情况,只需将大于号(>)和小于号(<)替换为它们的HTML实体等效形式即可。这是一个示例:

<pre>
    PrimeCalc calc = new PrimeCalc();
    Func&lt;int, int&gt; del = calc.GetNextPrime;
</pre>

这应该显示为(这次使用与markdown无前缀空格完全相同的方式):

    PrimeCalc calc = new PrimeCalc();
    Func<int, int> del = calc.GetNextPrime;

-1

这可能是与您的博客软件有关的特定问题,但您可以尝试使用以下字符串(删除下划线字符):

&_lt; &_gt;


-6
一个更好的方法是根本不必担心字符编码。只需将所有代码包裹在以下的<pre>标签中即可。
<pre>
${fn:escapeXml('
  <!-- all your code -->
')};
</pre>

你需要启用jQuery才能使其正常工作。


3
这并不是更好的做法。然后,您需要为JavaScript转义内容。在某些情况下,仍然有可能跳出JavaScript。例如,如果内容中包含</pre>会怎么样? - Brad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接