gpt4 book ai didi

java - 字符占用 6 个字节

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:05 26 4
gpt4 key购买 nike

我们正在尝试保存下面的字符串,它实际上是数据库中的一个名称,我们进行了一些 api 调用,我们得到了这个名称:

株式会社エス・ドプリュー・コミュニケーシェンズ

在通过我们的代码保存时(如在 servlet - hibernate - 数据库中),我们得到一个错误:

Caused by: java.sql.BatchUpdateException: ORA-12899: value too large for column "NAME_ON_ACCOUNT" (actual: 138, maximum: 100)

这是 23 个字符,但看起来每个字符占用 6 个字节,这只会使它成为 138。

下面的代码给我 69:

byte[] utf8Bytes = string.getBytes("UTF-8");    
System.out.println(utf8Bytes.length);

这给了我 92:

byte[] utf8Bytes = string.getBytes("UTF-32");
System.out.println(utf8Bytes.length);

我肯定会检查 NLS_CHARACTERSET 并查看 IO 类,但您见过一个占用 6 个字节的字符吗?任何帮助将不胜感激。

最佳答案

它可能将 HTML 实体保存在一个字符串中。像 或者可能是 URL 样式,%8C%9A。或者可能是 UTF7,例如 [Ay76b。 (我编造了这些值,但您的实际值会相似)。依赖任何具有字符编码的框架总是一件痛苦的事情,因为它的作者可能是美国或欧洲人,他们都满足于一个字节等于一个字符的简单 ANSI。如果您设法理解您的编码并将其转换为真正的 UTF8 甚至 UTF16,那么在这种特殊情况下它会占用更少的空间。

关于java - 字符占用 6 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772184/

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