我有一个使用编码设置为UTF-8
创建的DB2db2 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.
答案 0 :(得分:4)
您需要同时设置:
CHCP 65001
SET DB2CODEPAGE=1208
在运行db2cmd
之前,在db2 -tvf
命令行上。这适用于CODESET
设置为UTF-8
的数据库。检查数据库运行的CODESET
设置:
db2 get db cfg for <your database>
并查找“数据库代码页”和“数据库代码集”,它们应分别为1208
和UTF-8
。
答案 1 :(得分:1)
在处理编码时,您必须仔细研究您的环境,以及您目前的位置。所以在你的情况下:
在您的客户端中,您必须使用客户端的编码(或告诉客户端您有意在客户端使用其他编码 (如Windows中的UTF-8编码文件) 1251环境)!)。客户端和服务器之间的连接正在为您工作,将编码B更改为编码A,以便将数据存储到数据库中。