2

我们有一个访问 Oracle 11g 数据库的 Web 服务(封闭源代码)。它最近从 10g 升级到 11g。它返回记录,其中一列是 NCLOB 类型。发送到 Web 服务的字符串可能包含 Windows 换行符,\r\n。不幸的是,我不确定 Web 服务是否正在执行任何操作来操作从数据库发送/接收的数据。

在 10g 中,从 NCLOB 列返回的字符串是 Big Endian Unicode,并且所有的 '\r' 都被删除了,因此新行将作为 \n 返回。

在 11g 中,从 NCLOB 返回的字符串是 ASCII 编码的,并且所有的 '\r' 都被替换为 '\n',所以新行返回为 \n\n。

这看起来合理吗?老实说,我们处理 Oracle 换行问题已经有一段时间了(10g 的行为),我很确定这是升级到 11g 的结果。有没有人有关于 10g 和 11g 之间差异的信息,与换行符或转义字符序列存储或 NCLOB 数据类型有关?我试图在这里进行损坏控制并将矛头指向 Oracle 11g,但需要一些证据。

4

1 回答 1

0

How this is interpreted on the client depends on the client nls settings. You need to check if your client nls settings changed. Especially check the setting of the NLS_LANG environment variable. This needs to be set on a user basis. In windows this might be set in the registry.

于 2011-11-09T04:38:11.973 回答