DB2:如何在Windows下设置db2clp的编码?

时间:2013-03-11 09:41:13

标签: windows encoding db2

我有一个使用编码设置为UTF-8

创建的DB2
db2 create database mydb using codeset UTF-8

我的数据插入脚本也以UTF-8编码存储。 现在的问题是命令行处理器似乎使用不同的编码,因为Windows安装不使用UTF-8:

C:\Users\Administrator>chcp
Active code page: 850

这会导致我的数据(包含特殊字符)未正确存储到数据库中的问题。

在Linux / AIX下,我可以通过设置

来更改命令行编码
export LC_ALL=en_US.UTF-8

如何在Windows下实现这一目标?我已经尝试了

chcp 65001

更新: 但这不会有任何影响吗?似乎db2clp无法处理UTF-8编码的文件,因为它会打印出垃圾:

D:\Program Files\ibm_db2\SQLLIB\BIN>chcp 65001
Active code page: 65001

D:\Program Files\ibm_db2\SQLLIB\BIN>type d:\tmp\encoding.sql
INSERT INTO MY_TABLE (ID, TXT) VALUES (99, 'äöü');


D:\Program Files\ibm_db2\SQLLIB\BIN>db2 connect to mydb

Datenbankverbindungsinformationen

Datenbank-Server                                                = DB2/NT64 9.5.0
SQL-Berechtigungs-ID                                            = MYUSER
Aliasname der lokalen Datenbank                                 = MYDB

D:\Program Files\ibm_db2\SQLLIB\BIN>db2 -tvf d:\tmp\encoding.sql
INSERT INTO MY_TABLE (ID, TXT) VALUES (99, 'äöü')
DB20000I  Der Befehl SQL wurde erfolgreich ausgeführt.

2 个答案:

答案 0 :(得分:4)

您需要同时设置:

CHCP 65001
SET DB2CODEPAGE=1208
在运行db2cmd之前,在db2 -tvf命令行上

。这适用于CODESET设置为UTF-8的数据库。检查数据库运行的CODESET设置:

db2 get db cfg for <your database>

并查找“数据库代码页”和“数据库代码集”,它们应分别为1208UTF-8

答案 1 :(得分:1)

在处理编码时,您必须仔细研究您的环境,以及您目前的位置。所以在你的情况下:

  • 服务器将其数据存储在编码A(如UTF-8)
  • 客户端驻留在具有编码B的环境中(如windows-1252)

在您的客户端中,您必须使用客户端的编码(或告诉客户端您有意在客户端使用其他编码 (如Windows中的UTF-8编码文件) 1251环境)!)。客户端和服务器之间的连接正在为您工作,将编码B更改为编码A,以便将数据存储到数据库中。