【问题标题】:how encoding & decoding works in grails with decodeHTML & encodeAsHTML in grails?编码和解码如何在 grails 中使用 decodeHTML 和 encodeAsHTML 在 grails 中工作?
【发布时间】:2014-04-02 18:39:07
【问题描述】:

我正在尝试通过 decodeHTML 和 encodeAsHTML 了解 grails 中编码和解码的工作原理

// 解码 例子是

List symbols = ['!', '*', '/']
symbols.each { String symbol ->
    println symbol.decodeHTML()
}

应该打印出来

!    // but it prints !
*   // but it prints *
/   // but it prints /

// 编码示例为

List symbols = ['!', '*', '/']
symbols.each { String symbol ->
    println symbol.encodeAsHTML()
}

应该打印出来

'!'  // but it prints !
'*'  // but it prints *
'/'  // but it prints /

【问题讨论】:

  • 我认为你有这些倒退。
  • 对不起...你明白了!!
  • 不用担心,添加它作为答案。

标签: grails groovy grails-2.0


【解决方案1】:

escapeAsHtml 最终在apache commons lang 中调用StringEscapeUtils.escapeHtml

正如该方法的文档中所说的那样;

使用 HTML 实体转义字符串中的字符。

例如:

"bread" & "butter"

变成:"bread" & "butter"

支持所有已知的 HTML 4.0 实体,包括时髦的口音。笔记 常用的撇号转义字符 (') 不是 不支持法人实体等)。

它不会将所有字符都转换为其实体值,因此!*/ 等内容保持原样。这是 Groovy 中的一个示例:

@Grab( 'commons-lang:commons-lang:2.6' )
import static org.apache.commons.lang.StringEscapeUtils.escapeHtml

'!@£$%^&*()_+€-={}[]:"|;\'\\<>?,./~'.each {
    println "$it -> ${escapeHtml( it )}"
}

打印出来的:

! -> !
@ -> @
£ -> &pound;
$ -> $
% -> %
^ -> ^
& -> &amp;
* -> *
( -> (
) -> )
_ -> _
+ -> +
€ -> &euro;
- -> -
= -> =
{ -> {
} -> }
[ -> [
] -> ]
: -> :
" -> &quot;
| -> |
; -> ;
' -> '
\ -> \
< -> &lt;
> -> &gt;
? -> ?
, -> ,
. -> .
/ -> /
~ -> ~

【讨论】:

  • "escapeAsHtml" 你不是说encodeAsHTML吗?如果是这样,您确定它最终会调用StringEscapeUtils.escapeHtml?因为当我打印这个:"\"café\"".encodeAsHTML() 时,它会以&amp;quot;café&amp;quot; 结尾,而如果我使用StringEscapeUtils.escapeHtml("\"café\""),它会以&amp;quot;caf&amp;eacute;&amp;quot; 结尾。 (它也逃脱了é。)
猜你喜欢
  • 1970-01-01
  • 2013-09-14
  • 2014-07-24
  • 1970-01-01
  • 2017-07-10
  • 2014-09-04
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多