DB2 中的荷兰字符问题

Boj*_*nSM 3 db2 collation encoding

好的,首先,我对数据库的了解非常有限。

我的下一个问题是:我插入了几行包含荷兰字符的数据,例如不同国家的名称。一些国家在其名称末尾有荷兰语特殊字符 ë,或者像乌克兰在 i 上有两个点(Servië、Oekraïne、Tunesië、Somalië 等...)。数据库中的这些字符如下所示:ë -> A? 和 ï -> AZ。

当然,我希望这些荷兰语字符显示在数据库中。

Chr*_*ich 5

嗯,诀窍是数据库只能在创建时指定它用于哪个“区域设置”。创建数据库时,您可以通过指定代码集、地域和排序规则(示例CREATE DATABASE MYDB AUTOMATIC STORAGE YES ON '/data' DBPATH ON '/dbdir' USING CODESET UTF-8 TERRITORY US COLLATE USING SYSTEM)来指定所需的内容,或者让 DB2 根据某些系统设置进行猜测。

您可以通过运行来检查您的设置db2 get db cfg for <db name>。在上面使用的情况下,您将看到以下内容:

Database territory                                      = US
Database code page                                      = 1208
Database code set                                       = UTF-8
Database country/region code                            = 1
Database collating sequence                             = IDENTITY
Alternate collating sequence              (ALT_COLLATE) =
Run Code Online (Sandbox Code Playgroud)

请注意,创建数据库后无法更改这些设置。一种选择是从您的数据库中导出数据(使用db2export),删除并使用您想要的语言设置重建数据库,然后重新导入数据(使用db2import)。

另一种选择是查看是否有一种方法可以将您的字符串表示为纯“位”数据并存储位序列而不是“字符串”或将字段声明为VARCHAR FOR BIT DATA并将您的字符串存储为位序列(尽管我是对那个不是 100% 正面...)。

还可以查看下面的链接,因为它们有更多关于语言以及如何处理多代码页结果的信息。请注意,其中一些信息要求 DB2 至少为 9.5 或更高版本。

以及查看与该列表链接(不同代码页之间的字符转换)相关的整个多元文化支持父/兄弟链接。