我怎么能编码"成"和'成'?
我很惊讶单引号和双引号没有在HTML实体4.0中定义,因此StringEscapeUtils无法将这2个字符转义为相应的实体.
还有其他与字符串相关的工具能够做到这一点吗?
HTML实体4.0中没有定义单引号和双引号的原因吗?
除了单引号和双引号之外,是否有任何框架能够将所有unicode字符编码为相应的实体?由于所有的unicode都可以手动转换为十进制实体并以HTML格式显示,所以有什么工具可以自动转换它?
- 单引号和双引号未在HTML 4.0中定义
单引号仅在HTML 4.0中未定义,双引号定义为"启动HTML2.0
- StringEscapeUtils无法将这2个字符转义为相应的实体
escapeXml11在StringEscapeUtils 载体转化单引号成'.
例如:
StringEscapeUtils.escapeXml11("'"); //Returns '
StringEscapeUtils.escapeHtml4("\""); //Returns "
Run Code Online (Sandbox Code Playgroud)
- 还有其他与字符串相关的工具能够做到这一点吗?
Spring框架中的HTMLUtils负责单引号和双引号,它还将值转换为十进制(如'&").以下示例取自此问题的答案:
import org.springframework.web.util.HtmlUtils;
[...]
HtmlUtils.htmlEscapeDecimal("&")` //gives &
HtmlUtils.htmlEscape("&")` //gives &
Run Code Online (Sandbox Code Playgroud)
- HTML实体4.0中没有定义单引号和双引号的原因吗?
根据HTML 4中的Character实体引用,未定义单引号.双引号可从HTML2.0获得.而单引号作为XHTML1.0的一部分得到支持.
- 将所有unicode字符编码成相应实体的工具或方法
作为这个问题的答案的一部分,提到了一个非常好的和简单的java实现.
以下是基于该答案的示例程序:
import org.apache.commons.lang3.StringEscapeUtils;
public class HTMLCharacterEscaper {
public static void main(String[] args) {
//With StringEscapeUtils
System.out.println("Using SEU: " + StringEscapeUtils.escapeHtml4("\" ¶"));
System.out.println("Using SEU: " + StringEscapeUtils.escapeXml11("'"));
//Single quote & double quote
System.out.println(escapeHTML("It's good"));
System.out.println(escapeHTML("\" Grit \""));
//Unicode characters
System.out.println(escapeHTML("This is copyright symbol ©"));
System.out.println(escapeHTML("Paragraph symbol ¶"));
System.out.println(escapeHTML("This is pound £"));
}
public static String escapeHTML(String s) {
StringBuilder out = new StringBuilder(Math.max(16, s.length()));
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c > 127 || c == '"' || c == '<' || c == '>' || c == '&' || c == '\'') {
out.append("&#");
out.append((int) c);
out.append(';');
} else {
out.append(c);
}
}
return out.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
以下是一些有趣的链接,我在追求答案时遇到了这些链接:
| 归档时间: |
|
| 查看次数: |
9819 次 |
| 最近记录: |