我们正在试图挽救以下字符串这实际上是在数据库的名称,我们做了一些API调用,我们得到这个名字:字符以6个字节
株式会社エス·ダブリュー·コミュニケーションズ
虽然通过我们的代码保存(如小服务程序 - 冬眠 - 数据库),我们得到一个错误:
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个字节?任何帮助都感激不尽。
阅读这一点,看看是否有帮助:http://stackoverflow.com/questions/6063148/java-unicode-where-to-find-example-n-byte-unicode-characters – Crontab
+1为上述链接。注意[** CESU-8编码**](http://en.wikipedia)中提到的(在[此回答](http://stackoverflow.com/a/6066442/240733)的评论中) .org/wiki/CESU-8),据说哪些Oracle数据库被使用,哪些会导致6字节的“UTF-8”字符。 – stakx
您使用的是CHINESE_CHINA.WE8ISO8859P1吗? –