Мы можем успешно получить доступ к IBM DB2 LUW Server 9.7 из Node.JS на клиенте Widows, используя пакет npm ibm_db.
Но у нас есть проблема с кодировкой символов в результирующем наборе SQL-запроса ibm_db,Данные в наборе результатов JavaScripte уже искажены, когда речь заходит об умлаутах Германии.
Если мы выполняем одинаковый SQL-запрос в командной строке (db2cmd.exe), все в порядке, включая умлауты.
Если мы проверим с помощью 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 (какое свойство соединения использовать? Документация трудно найти)
- установка 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
- IBM DB2 Server для LUW 9.7