在Oracle CLOB流中编写utf8字符串会产生额外的空格(node.js)

时间:2019-03-18 11:03:19

标签: node.js oracle oracledb node-oracledb

我使用node.js,oracle和oracledb模块。我也有一个像这样的简单PL / SQL过程

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

它准确返回已传递的内容。

然后我使用API​​ clob = connection.createLob(oracledb.CLOB)创建一个临时CLOB对象 并用一些clob.write(chunk)

这样的unicode字符串块(多次迭代)填充它

将Clob传递给过程执行后,我收到生成的CLOB对象并尝试读取它。我看到我的块在每个块之后都写有额外的空格。当我写一个长度为4个符号的类似"abcЩ"的字符串时,它被写为"abcЩ "(每个非ASCII符号的尾部空格)。换句话说,已写块的大小等于原始字符串占用的字节数。

我已经尝试为Clob指定utf8编码,例如:clob.setEncoding('utf8'),甚至在编写clob.write(chunk, 'utf8')时也是如此,但是结果始终相同。

问题解释是什么?我想念什么?

1 个答案:

答案 0 :(得分:0)

node-oracledb的维护者确认这是一个错误。因此,我们将为下一个版本作好准备!