Java 当使用HTML实体转义字符串时,如果使用UTF-8,是否可以安全地跳过Unicode 127以上的编码字符?

Java 当使用HTML实体转义字符串时,如果使用UTF-8,是否可以安全地跳过Unicode 127以上的编码字符?,java,html,encoding,escaping,html-entities,Java,Html,Encoding,Escaping,Html Entities,在HTML中输出字符串时,出于可以理解的原因,必须将特殊字符转义为HTML实体(“&”等) 我已经研究了这方面的两个Java实现: org.apache.commons.lang.StringEscapeUtils.escapeHtml(字符串) net.htmlparser.jericho.CharacterReference.encode(CharSequence) 这两种方法都对Unicode代码点127(0x7F)以上的所有字符进行转义,这实际上是所有非英语字符 这种行为很好,但当字符为

在HTML中输出字符串时,出于可以理解的原因,必须将特殊字符转义为HTML实体(“&”等)

我已经研究了这方面的两个Java实现: org.apache.commons.lang.StringEscapeUtils.escapeHtml(字符串) net.htmlparser.jericho.CharacterReference.encode(CharSequence)

这两种方法都对Unicode代码点127(0x7F)以上的所有字符进行转义,这实际上是所有非英语字符

这种行为很好,但当字符为非英语(例如,希伯来语或阿拉伯语)时,它生成的字符串是非人类可读的。我已经看到,当Unicode 127以上的字符没有像这样转义时,它们在浏览器中仍能正确呈现-我相信这是因为html页面是UTF-8编码的,因此浏览器可以理解这些字符


我的问题:在转义HTML实体时,如果我的网页是UTF-8编码的,我可以安全地禁用转义代码点127以上的Unicode字符吗?

如果您在mime类型标题中发送编码:

Content-Type: text/html; charset=utf-8
然后浏览器会将源代码解释为UTF-8,您可以将所有这些字符作为正常的UTF-8编码字节发送

或者,您可以在HTML页面的标题中指定编码,如下所示:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

您只需要在两种情况下使用HTML实体:

  • 转义在HTML中具有特殊含义的字符(例如
    
    
    <meta charset="utf-8">