Windows上的Node.JS + ibm_db + DB2 LUW 9.7的代码页问题(例如德语变音符)

时间:2019-03-01 13:57:35

标签: node.js db2 codepages

我们可以使用npm软件包ibm_db从Widows客户端上的Node.JS成功访问IBM DB2 LUW Server 9.7。

但是在ibm_db SQL查询的结果集中,chacharter编码确实存在问题。当涉及到德国变种äÄöÖüÜß时,JavaScripte结果集中的数据已经变形。

如果我们在命令行(db2cmd.exe)上执行相同的SQL查询,那么包括变音符号的一切都很好。

如果我们使用JavaScript检查SQL结果集中的变音符号编码为interger(string.charCodeAt(index)),我们会发现变音符号格式错误。所有不同的变音符号都转换为一个且相同的dec:65533 / hex:FFFD / char:'�'。

我们还通过以下方式检查了数据库中的SQL列字符集:

select name,tbcreator,codepage from sysibm.syscolumns where ...

给出结果1252。

其他徒劳的尝试:

  • 使用SL CAST(.... CCSID ####)
  • 在数据库URL中设置属性(哪个连接属性是要使用的?很难找到的文档)
  • 在打开连接ibm_db.openSync(db_url,db_options)时将db_options ['codeSet']设置为1252,windows-1252,UTF-8、1208 ...

嗯。。。我在这里塞了一个垃圾。怎么了?

感谢您的帮助。

环境:

  • Windows 10
  • node.js 10.15.1
  • ibm_db 2.5.0
  • npm 6.4.1
  • 用于LUW 9.7的IBM DB2服务器

1 个答案:

答案 0 :(得分:1)

您是否测试过设置Windows系统环境变量DB2CODEPAGE = 1208? (您可能需要在设置它之后重新启动,以允许您的堆栈拾取它)