DB2 UTF-8编码:Umlaut到CHAR(1)?

时间:2017-01-30 10:27:56

标签: encoding utf-8 db2

UTF-8编码的DB2数据库中的“CHAR(1)”是什么意思?

我可以在CHAR(1)列中插入一个特殊字符(例如,在UTF-8中占用2个八位字节的字符)吗?

或者UTF-8中的CHAR(1)总是意味着它有一个字节/八位字节的容量,即插入变音符号会失败吗?

我仔细阅读了这篇有趣的developerWorks文章,但对于我这个简单的问题,这篇文章会更深入......

1 个答案:

答案 0 :(得分:4)

这取决于。 :)

DB2引入了code units来帮助设计基于字符数而不是字节数的字符串类型列。 CREATE TABLE语句概述了数据类型,并解释了CHARVARCHAR。如果使用字符数,则DB2假设最坏的情况 - 每个字符4个字节/八位字节 - 用于长度计算。

数据库配置string_units确定默认情况下是否考虑字符数(CODEUNITS32)或字节数(SYSTEM)。

回到你的问题:如果你没有指定任何东西,将一个需要2个八位字节的特殊字符插入CHAR(1)可能会失败。如果指定了CODEUNITS32,那么它将成功。