我一直在谷歌搜索,但我还没有找到任何答案,我的麻烦。如何转换符号(HTML中的尖锐字符首先),并保留在HTML中的锐角字符
我正在测试我的Java应用程序,我注意到当我创建带有重音字符(HTML特殊字符,如á,é,í,ó,ú)的用户名时,并没有很好地显示这些字符。 我的意思是,例如:名为Álvaro
的用户显示�lvaro
。
你知道Java中的任何函数来转换特殊字符吗?
我一直在谷歌搜索,但我还没有找到任何答案,我的麻烦。如何转换符号(HTML中的尖锐字符首先),并保留在HTML中的锐角字符
我正在测试我的Java应用程序,我注意到当我创建带有重音字符(HTML特殊字符,如á,é,í,ó,ú)的用户名时,并没有很好地显示这些字符。 我的意思是,例如:名为Álvaro
的用户显示�lvaro
。
你知道Java中的任何函数来转换特殊字符吗?
您需要使用StringEscapeUtils.escapeHtml
转义HTML字符。
StringEscapeUtils.escapeHtml("Ávaro");
也许提到它来自[Apache Commons](http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html)。 –
是的,实际上我忘记提到:) –
你也可以改变你的HTML页面编码为UTF-8 ...
在Eclipse中创建了一个页面HTML您在页面中插入该头
<%@ page language="java"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
这不是JSP特有的吗?对于一个任意的HTML页面,你应该使用一个''标签,如[meta charset vs http-equiv]所述(http://stackoverflow.com/questions/4696499/meta-charset-utf-8-vs-meta- HTTP的当量含量型)的 –
理想情况下,用一个Content-type头来处理你的HTML,该头指定了用于编码HTML的字符集。
如果这不是一个选项,那么以这种方式编码非ASCII字符的最简单方法就是使用任何字符集来处理HTML,那就是使用数字实体:'Á'
- >Á
。
如果您知道您的内容已经是HTML,那么下面的代码将会转义它,以便可以使用各种编码(包括ASCII和UTF-8)来提供它。
public static String escapeHTML(String htmlTextNodeValue) {
int n = htmlTextNodeValue.length();
int encoded = 0;
StringBuilder out = null;
for (int i = 0, charCount; i < n; i += charCount) {
int codePoint = htmlTextNodeValue.codePointAt(i);
charCount = Character.charCount(codePoint);
if (codePoint > 0x7f
|| codePoint == '<' || codePoint == '>' || codePoint == '&'
|| codePoint == '"' || codePoint == '\'') {
if (out = null) { out = new StringBuilder(n + 1024); }
out.append(htmlTextNodeValue, encoded, i));
encoded = i + charCount;
switch (codePoint) {
case '<': out.append("<"); break;
case '>': out.append(">"); break;
case '&': out.append("&"); break;
default: out.append("&#").append(codePoint).append(';');
}
}
}
if (out != null) {
return out.append(htmlTextNodeValue, encoded, n).toString();
} else {
return htmlTextNodeValue;
}
}
你如何获得你写这些字符的输出流?你用HTML提供什么标题? –