是否可以更改/设置编码node.js ibm_db驱动程序的查询?
我在Windows 2008服务器上安装了db2 9.7数据库。数据库territory
设置为RU
,codepage
和codeset
设置为1251
。
我在Windows 10客户端计算机上安装了带有ibm_db软件包的node.js应用。
如果在客户端计算机上将db2codepage
设置为1251
,则数据是不可读的,就像这样。
如果在客户端计算机上将db2codepage
设置为1208
,我可以通过选择查询接收可读的西里尔字母数据。
但是,如果我尝试使用西里尔文的参数进行查询,则查询不会返回任何数据。
例如:
select * from mytable where name = 'John';
-一切正常
select * from mytable where name = 'Иван';
-不返回任何数据,但我知道表中有一些记录,在“名称”字段中具有“Иван”值。来自dbvisualiser的相同查询或类似工具将按预期返回数据。
使用db2mon可以看到查询中的西里尔参数具有错误的编码:
select * from mytable where name = 'Иван'
所以,我认为问题出在node.js的ibm_db驱动程序中。
关于如何使节点ibm_db驱动程序正常工作的任何想法?
我尝试了 db2codepage , db2country , lang 环境变量的不同组合,不同的 codeSet 选项值使用 ibmdb.openSync 函数建立数据库连接。
我也尝试使用此answear手动将查询字符串编码到Windows-1251,但没有成功。
更新:
客户端Windows 10系统的 db2level
命令输出(自动翻译成英文):
DB21085I This instance or installation (instance name, if any: "") uses the "32" bit version and DB2 code release "SQL0907B" with level identifier "080C0107".
Information elements are "DB2 v9.7.1100.352", "s150922", "IP23938", and FixPack "11".
The product is installed in "C:\PROGRA~2\IBM\IBMDAT~1", the DB2 copy name is "IBM Data Server Driver For ODBC and CLI".