我一直在谷歌搜索,但我没有找到任何问题的答案。
我正在测试我的 Java 应用程序,我注意到当我创建一个带有重音字符(HTML 特殊字符,如 á、é、í、ó、ú)的用户名时,它并没有很好地显示这些字符。我的意思是,例如:一个名为Álvaro
show 的用户�lvaro
。
你知道Java中有什么函数可以转换特殊字符吗?
我一直在谷歌搜索,但我没有找到任何问题的答案。
我正在测试我的 Java 应用程序,我注意到当我创建一个带有重音字符(HTML 特殊字符,如 á、é、í、ó、ú)的用户名时,它并没有很好地显示这些字符。我的意思是,例如:一个名为Álvaro
show 的用户�lvaro
。
你知道Java中有什么函数可以转换特殊字符吗?
理想情况下,您使用 Content-type 标头为您的 HTML 提供服务,该标头指定用于编码 HTML 的字符集。
如果这不是一个选项,那么以可以使用任何字符集服务器 HTML 的方式对非 ASCII 字符进行编码的最简单方法是使用数字实体:'Á'
-> Á
。
如果您知道您的内容已经是 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;
}
}
您需要使用StringEscapeUtils.escapeHtml
.
StringEscapeUtils.escapeHtml("Ávaro");
您还可以将 HTML 页面编码更改为 UTF-8...
对于在 Eclipse 中创建的页面 HTML,您在页面中插入此标题
<%@ page language="java"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>