转义序列是否保留在CLOB中?

时间:2009-12-30 20:23:27

标签: java oracle

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

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

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

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

如果您能提供任何想法/意见,我们将非常感激。

3 个答案:

答案 0 :(得分:2)

您需要确保在整个过程中使用正确且相同的字符编码。我强烈建议你为UTF-8提货。它涵盖了世界上众所周知的每一个人类角色。应指示涉及处理字符数据的每个步骤使用相同的编码。

在SQL上下文中,确保使用UTF-8字符集创建数据库和表。在JDBC上下文中,确保JDBC驱动程序正在使用UTF-8;这通常可以通过JDBC连接字符串进行配置。在Java代码上下文中,确保在从/向流读取/写入字符数据时使用UTF-8;您可以在InputStreamReaderOutputStreamWriter中将其指定为第二个构造函数参数。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

在这种情况下,我不能100%确定逃逸序列的含义。在(例如)Java文字字符串中,"\n"是表示换行符的转义序列,但是一旦将该字符串输出到某个东西(比如数据库),它就不再是转义序列,它是一个实际的换行符字符。

无论如何,对于你的直接问题,Java through可以完全从Oracle CLOB中读取文本。新线不会丢失。

相关问题