gpt4 book ai didi

java - java和mysql中相同字符串的不同unicode

转载 作者:太空宇宙 更新时间:2023-11-03 12:22:12 25 4
gpt4 key购买 nike

据我所知,我知道 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

两者都在浏览器中正确显示。为什么它们都生成不同的 unicode?提前致谢..

最佳答案

那些不是不同的数字……

  • 3081 = 0c09 = ఉ = 泰卢固语字母 U
  • 3108 = 0c24 = త = 泰卢固语字母 TA
  • 3149 = 0c4d = ్ = TELUGU SIGN VIRAMA

……等等。

表示相同 Unicode code point 的两种不同方式.

第一个是十进制数(以 10 为底)。第二个是 hexadecimal数字(以 16 为底)。

当使用类似 Formatter 的类时,有时它有助于阅读文档。然后您可能会明白为什么要将 f.format("\\u%04x" 粘贴到您的代码中。

提示:如果您有 Mac,请下载 UnicodeChecker应用程序查看 Unicode 中定义的每个字符的十进制和十六进制数字.

关于java - java和mysql中相同字符串的不同unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com