DB2 UTF-8 编码:元音变音为 CHAR(1)?

Bas*_*stl 1 db2 encoding utf-8

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

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

或者 UTF-8 中的 CHAR(1) 是否始终意味着它具有一个字节/八位字节的容量,即在其中插入元音变音会失败?

我阅读了这篇有趣的developerWorks文章,但它对于我的简单问题来说很深入......

dat*_*rik 5

这取决于。:)

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

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

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