为什么Java在从DB中读取时将\ n \ r转换为\\ n \\ r

时间:2018-03-22 10:59:18

标签: java newline h2 carriage-return

我在数据库中有一些文字( H2 ),如下所示:

--------------------------------------------------------
ID  |       User     |            Properties           |
--------------------------------------------------------
1   |       Oli      |     age=23\n\rgender=MALE\n\r   |
--------------------------------------------------------
2   |       Umpa     |     age=23\n\rjob=STUDENT\n\r   |
--------------------------------------------------------

当我在我的应用程序中查询这些行时,Java会转换所有\n\r个字符to \\n\\r,这意味着没有任何 LF CR 我的应用程序中最后一个字符串中的字符。

最后,我已在程序中用 \ n \ r 替换 \ n \ r 字符,问题解决了。 (queried_column.replace("\\n\\r","\r\n")

现在,我的问题是为什么Java有这种行为?

1 个答案:

答案 0 :(得分:1)

由于数据库中的文字不包含 LF CR 字符,因此它包含\个字符,n字符和r个字符。因此,Java不会转换任何内容,它会为您提供完全来自数据库的文本。

解除这些特殊字符的解决方案是正确的。