DB2 UTF8存储配置

时间:2015-04-14 14:05:06

标签: database utf-8 db2

我有DB2数据库,我已经使用varchar(x)定义了表,但似乎x - 不是字符数,而是字节数。有可能以某种方式动态修复问题吗?或者我应该更新我的桌子?

1 个答案:

答案 0 :(得分:0)

UTF-8字符可以由1到4个字节长的字节序列表示,因此不可能事先知道包含x个Unicode字符的UTF-8字符串的最大字节长度。 / p>

从DB2 10.5修订包4开始(所谓的" Cancun版本")在定义列时可以specify string length unitsVARCHAR(x OCTETS)表示x个字节; VARCHAR(x CODEUNITS16)表示x个双字节字符,VARCHAR(x CODEUNITS32)表示x个四字节字符。

如果您没有明确指定单位,则默认值来自string_units数据库配置参数和NLS_STRING_UNITS全局变量。

GRAPHICVARGRAPHIC数据类型也遵循相同的单位规范,但它们的默认单位是2字节字符,而不是八位字节。

请注意,字符和CLOB列仍然受到与以前相同的长度限制:例如,VARCHAR列的最大长度为32672字节(OCTETS)或16336 {{1 },或8168 CODEUNITS16