我们正在尝试保存下面的字符串,它实际上是数据库中的一个名称,我们进行了一些 api 调用,我们得到了这个名称:
株式会社エス・ダブリュー・コミュニケーションズ</p>
在通过我们的代码保存时(如在 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 个字节的字符吗?任何帮助都感激不尽。