为什么 Java 在从数据库中读取它们时将 \n\r 转换为 \\n\\r

Why does Java convert \n\r to \\n\\r when reading them from DB

我在数据库(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,这意味着没有任何 LFCR 个字符在我的应用程序的最终字符串中。

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

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

因为您数据库中的文本不包含 LFCR 个字符,它包含 \ 个字符,n 个字符和 r 个字符。所以 Java 没有转换任何东西,它给你 完全 来自数据库的文本。

您对 un-escape 这些特殊字符的解决方案是正确的。