【发布时间】:2013-10-09 19:03:04
【问题描述】:
我观察到一个问题,我试图在 DB2 数据库中保存一条记录,其中包含在 Java 代码中进行长度检查的字段。我保持长度检查完全等于数据库 varchar 限制。并试图保存但得到 SQL Exception DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=3.57.82;
然后我减小长度(截断)长度小于数据库大小。为 varchar(1000) 截断为子字符串 (0, 900) apprx。
请告诉我可能是什么原因。它与字符编码有关吗? 需要如何处理?
应用于字符串的默认字符编码是什么(从文本区域字段的请求参数输入)和对应的编号。字节数?
【问题讨论】:
-
肯定有字符编码问题。 java中的字符实际上是作为代码点实现的。有些字符需要两个代码点才能准确描述。这意味着即使一个字符串可能只显示 1000 的长度,它实际上可能包含 2000 个代码点。
-
It seems 您可能需要最多 3 倍的字符串长度。
标签: java character-encoding size varchar string-length