Гость
Map
Форумы / Серверный JavaScript (Node.js, Ringo, Nitro, Sling) [игнор отключен] [закрыт для гостей] / Модуль Node.js "sybase" и данные из БД (Sybase 12.5.4) в кодировке cp1251 / 1 сообщений из 1, страница 1 из 1
12.10.2020, 12:27
    #40007671
lolo-soft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модуль Node.js "sybase" и данные из БД (Sybase 12.5.4) в кодировке cp1251
Народ помогите разобраться!
Использую для подключения к БД модуль sybase , который основан на jConnect.

Проблема в том, что БД вся в кодировке cp1251, а модуль, судя по коду, преобразует получаемые данные в UTF-8. В итоге русские символы заменяются на знаки вопросов.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
const Sybase = require('sybase')

const host = '10.10.0.250',
  port = 5020,
  dbname = 'DB1',
  username = 'sa',
  password = '',
  logTiming = false,
  pathToJavaBridge = 'node_modules\\sybase\\JavaSybaseLink\\dist\\JavaSybaseLink.jar'

const dbSybase = new Sybase(host, port, dbname, username, password, logTiming, pathToJavaBridge)

dbSybase.connect((err) => {
  dbSybase.query('select top 10 * from USERS', (err,res) => {
    dbSybase.disconnect()
    if (err) console.log(err)
    console.log(res)
  })
})



Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
PS D:\Projects\serverAPI> node test
this: [object Object] currentMessages: [object Object] this.queryCount: 1
sql request written: {"msgId":1,"sql":"select top 10 * from USERS","sentTime":1602494043949}
[
  {
    FROM_DATE: '2008-12-31T16:00:00.0Z',
    LAST_ENTRY: '2020-10-09T12:48:26.510Z',
    FIRST_ENTRY: '2007-01-12T08:38:29.513Z',
    USER_STATUS: '?',
    DATE_CHANGE: '2020-03-29T16:00:00.0Z',
    TO_DATE: '2049-12-31T16:00:00.0Z',
    XPASSWORD: '1',
    USER_NAME: 'admin                                             ',
    E_MAIL: 'admin@microsoft.com                               ',
    USER_CODE: 1,
    USER_PASSWORD: '1               ',
    FULL_NAME: '??????????????????????                                                                                       ',
    USER_ACTIVE: '1',
    USER_LEVEL: '?',
    COUNTER: 5990
  },



Предполагаю, что проблема кроется в этом коде (SybaseDB.js из модуля sybase, строка 52):

Код: javascript
1.
2.
// set up normal listeners.		
that.javaDB.stdout.setEncoding('utf8').pipe(that.jsonParser).on("data", function(jsonMsg) { that.onSQLResponse.call(that, jsonMsg); });



Но сам я еще мало разбираюсь в Node.JS поэтому, как поправить код, чтобы получать результат запроса в нужной кодировке, не знаю.
Пробовал запускать из консоли JAR-файл с нужными параметрами - он выводит данные в нужной кодировке.

Задача вообще просто получить данные в нормальном виде. Если есть другой способ....
...
Рейтинг: 0 / 0
Форумы / Серверный JavaScript (Node.js, Ringo, Nitro, Sling) [игнор отключен] [закрыт для гостей] / Модуль Node.js "sybase" и данные из БД (Sybase 12.5.4) в кодировке cp1251 / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]