据我所知,我知道unicode字符意味着每个字母都有一个唯一的代码。
在我的数据库中,我设置了utl8。
在这里,我将一个字符串(ఉత్తరప్రదేశ్)直接保存到java中的数据库中。然后将其另存为
ఉత్తరప
్రదేశ్
但我使用
保存在数据库中的相同字符串escapeUnicode(StringEscapeUtils.unescapeHtml("here string"));
public String escapeUnicode(String input) {
StringBuilder b = new StringBuilder(input.length());
Formatter f = new Formatter(b);
for (char c : input.toCharArray()) {
if (c < 128) {
b.append(c);
} else {
f.format("\\u%04x", (int) c);
}
}
return b.toString();
}
正在生成unicode
\u0c09\u0c24\u0c4d\u0c24\u0c30\u0c2a\u0c4d\u0c30\u0c26\u0c47\u0c36\u0c4d
两者都在浏览器中正确显示。为什么它们都生成不同的unicodes? 提前谢谢..
答案 0 :(得分:3)
那些不不同的数字......
......等等。
两种不同的方式来表示相同的Unicode code point。
第一个是十进制数字(基数为10)。第二个是hexadecimal个数字(基数为16)。
使用Formatter等类时,有时阅读文档会有所帮助。然后,您可能会理解为什么将f.format("\\u%04x"
粘贴到代码中。
提示:如果您有Mac,请下载UnicodeChecker应用,查看Unicode中定义的每个字符的十进制和十六进制数字。