我們正在試圖挽救以下字符串這實際上是在數據庫的名稱,我們做了一些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嗎? –