Node.JS + ibm_db + Windows 上的 DB2 LUW 9.7 的代码页问题(例如德语变音符号)
Codepage problem (e.g. german umlauts) with Node.JS + ibm_db + DB2 LUW 9.7 on Windows
我们可以使用 npm 包 ibm_db.
在 Widows 客户端上从 Node.JS 成功访问 IBM DB2 LUW Server 9.7
但是 ibm_db SQL 查询的结果集中的字符编码确实存在问题。 JavaScripte 结果集中的数据在涉及德语变音符号 äÄöÖüÜß 时已经出现错误。
如果我们在命令行 (db2cmd.exe) 执行相同的 SQL 查询,一切都很好,包括变音符号。
如果我们检查 JavaScript SQL 结果集中变音符号的编码为整数 (string.charCodeAt(index)),我们发现变音符号已经变形。所有不同的变音符号都已转换为一个相同的 dec:65533/hex:FFFD/char:'�'.
我们还检查了数据库中的 SQL 列字符集:
select name,tbcreator,codepage from sysibm.syscolumns where ...
给出结果 1252。
其他徒劳的尝试:
- 使用 SL CAST(....CCSID ####)
- 在 db URL 中设置 属性(使用哪个连接 属性?很难找到文档)
- 设置 db_options['codeSet'] 为 1252, windows-1252, UTF-8, 1208... 打开连接时 ibm_db.openSync(db_url, db_options);
嗯嗯....我确实有点卡住了。怎么了?
感谢任何帮助。
环境:
- Windows 10
- node.js 10.15.1
- ibm_db 2.5.0
- npm 6.4.1
- 用于 LUW 9.7 的 IBM DB2 服务器
您是否测试过 Windows 系统环境变量 DB2CODEPAGE=1208 的设置? (你可能需要在设置后重新启动,让你的堆栈拾取它)
我们可以使用 npm 包 ibm_db.
在 Widows 客户端上从 Node.JS 成功访问 IBM DB2 LUW Server 9.7但是 ibm_db SQL 查询的结果集中的字符编码确实存在问题。 JavaScripte 结果集中的数据在涉及德语变音符号 äÄöÖüÜß 时已经出现错误。
如果我们在命令行 (db2cmd.exe) 执行相同的 SQL 查询,一切都很好,包括变音符号。
如果我们检查 JavaScript SQL 结果集中变音符号的编码为整数 (string.charCodeAt(index)),我们发现变音符号已经变形。所有不同的变音符号都已转换为一个相同的 dec:65533/hex:FFFD/char:'�'.
我们还检查了数据库中的 SQL 列字符集:
select name,tbcreator,codepage from sysibm.syscolumns where ...
给出结果 1252。
其他徒劳的尝试:
- 使用 SL CAST(....CCSID ####)
- 在 db URL 中设置 属性(使用哪个连接 属性?很难找到文档)
- 设置 db_options['codeSet'] 为 1252, windows-1252, UTF-8, 1208... 打开连接时 ibm_db.openSync(db_url, db_options);
嗯嗯....我确实有点卡住了。怎么了?
感谢任何帮助。
环境:
- Windows 10
- node.js 10.15.1
- ibm_db 2.5.0
- npm 6.4.1
- 用于 LUW 9.7 的 IBM DB2 服务器
您是否测试过 Windows 系统环境变量 DB2CODEPAGE=1208 的设置? (你可能需要在设置后重新启动,让你的堆栈拾取它)