Java 逃逸序列是否保存在CLOB中?

Java 逃逸序列是否保存在CLOB中?,java,oracle,Java,Oracle,我们正在使用Java和Oracle进行开发 我在oracle数据库中有一个表,其中有一个CLOB列。某些XYZ应用程序在此列中转储文本文件。文本文件有多行 在通过Java应用程序读取同一CLOB文件时,转义序列(新行字符等)是否可能丢失 我问这个问题的原因是,我们要逐行解析这个文件,如果转义序列丢失,那么我们就麻烦了。我本来会自己做这个分析的,但我正在休假,我的团队需要紧急帮助 如果您能提供任何想法/输入,我将不胜感激。CLOB存储字符数据。回车符和换行符是有效字符,但不可打印。只要你的XYZ应

我们正在使用Java和Oracle进行开发

我在oracle数据库中有一个表,其中有一个CLOB列。某些XYZ应用程序在此列中转储文本文件。文本文件有多行

在通过Java应用程序读取同一CLOB文件时,转义序列(新行字符等)是否可能丢失

我问这个问题的原因是,我们要逐行解析这个文件,如果转义序列丢失,那么我们就麻烦了。我本来会自己做这个分析的,但我正在休假,我的团队需要紧急帮助


如果您能提供任何想法/输入,我将不胜感激。

CLOB存储字符数据。回车符和换行符是有效字符,但不可打印。只要你的XYZ应用程序正确地填充了你的CLOB,内容就应该像来自文件一样易于管理


根据平台和所述“XYZ应用程序”的性质,行可以由
\r
(Mac)、
\r\n
(DOS/Windows)或
\n
(Unix/Linux)分隔,必要时应考虑到这一事实。这是
BufferedReader.readLine()
更方便的一个方面,因为它透明地消除了这种差异。

我不完全确定在这种上下文中转义序列是什么意思。在(例如)Java文字字符串中,
“\n”
是一个表示换行符的转义序列,但一旦该字符串被输出到某个对象(例如,数据库)中,它就不再是转义序列,而是实际的换行符


无论如何,对于您的直接问题,Java可以从Oracle CLOB中读取文本。换行符不会丢失。

您需要确保在整个过程中使用正确且相同的字符编码。为此,我强烈建议您选择
UTF-8
。它涵盖了世界上已知的每一个人的性格。涉及字符数据处理的每个步骤都应指示使用完全相同的编码


在SQL上下文中,确保使用
UTF-8
charset创建数据库和表。在JDBC上下文中,确保JDBC驱动程序使用的是
UTF-8
;这通常可以通过JDBC连接字符串进行配置。在Java代码上下文中,确保在从/向流读取/写入字符数据时使用
UTF-8
;您可以在
InputStreamReader
OutputStreamWriter
中将其指定为第二个构造函数参数。一个小说明:使用了Mac OS 1-9\r;Mac OS X使用\n。