Запись строк utf8 в поток Oracle CLOB дает дополнительные пробелы (node.js) - PullRequest
0 голосов
/ 18 марта 2019

Я использую node.js, oracle и oracledb module. Также у меня есть простая процедура PL / SQL, как это

    procedure mock_lobs(
        P_CLOB  IN OUT CLOB,
        P_BLOB  IN OUT BLOB
    )
    AS
    BEGIN
      NULL;
    END mock_lobs;

Возвращает именно то, что было передано.

Затем я создаю временный объект CLOB, используя API clob = connection.createLob(oracledb.CLOB) и заполнить его некоторыми кусочками строки Unicode (несколько итераций), как это clob.write(chunk)

После того, как clob передается на выполнение процедуры, я получаю результирующий объект CLOB и пытаюсь прочитать его. Я вижу, что мои куски были написаны с дополнительными пробелами после каждого. Когда я пишу строку типа "abcЩ" длиной 4 символа, она записывается как "abcЩ " (хвостовые пробелы для каждого символа, не входящего в ASCII). Другими словами, размер записанного фрагмента равен количеству байтов, которое занимает исходная строка.

Я пытался указать utf8 кодировку для clob следующим образом: clob.setEncoding('utf8') и даже при записи clob.write(chunk, 'utf8'), но результат всегда одинаков.

В чем причина проблемы? Чего мне не хватает?

1 Ответ

0 голосов
/ 19 марта 2019

node-oracledb Мантены подтвердили, что это ошибка.Итак, мы будем в следующих выпусках!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...