node.js - 在 oracle CLOB 流中写入 utf8 字符串会产生额外的空格 (node.js)
问题描述
我使用 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 对象clob = connection.createLob(oracledb.CLOB)
,并使用一些 unicode 字符串块(多次迭代)填充它,如下所示clob.write(chunk)
将 clob 传递给过程执行后,我收到生成的 CLOB 对象并尝试读取它。我看到我的块在每个块之后都写有额外的空格。当我写一个"abcЩ"
长度为 4 个符号的字符串时,它被写成"abcЩ "
(每个非 ASCII 符号的尾随空格)。换句话说,写入块的大小等于原始字符串占用的字节数。
我试图utf8
像这样为 clob 指定编码:clob.setEncoding('utf8')
即使在写作时clob.write(chunk, 'utf8')
,但结果总是相同的。
问题解释是什么?我错过了什么?
解决方案
node-oracledb
管理员确认这是一个错误。所以,我们将为下一个版本做好准备!
推荐阅读
- spring - 如何在带有 Kotlin 的 Spring RabbitMQ 中使用多个消费者绑定
- python - Python 使用 itertools 查找所有组合/排列(带替换)
- javascript - 如何从另一个对象构造父子关系对象
- flutter - Flutter Test:测试是否在构建时选中了复选框
- function - PLSQL 函数聚合选择循环
- reactjs - react-router-dom - 如何使用查询参数作为路径?
- r - MLflow Rstudio Dockerfile 权限被拒绝
- java - Thymeleaf 模板不解析属性
- go - 我可以迭代银杏的测试吗
- excel - 上传到网站时的 Excel 文件四舍五入