为什么 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
,这意味着没有任何 LF 和 CR 个字符在我的应用程序的最终字符串中。
最后,我在程序中将\n\r字符替换为\n\r,问题解决. (queried_column.replace("\n\r","\r\n")
)
现在,我的问题是为什么 Java 有这种行为?
因为您数据库中的文本不包含 LF 或 CR 个字符,它包含 \
个字符,n
个字符和 r
个字符。所以 Java 没有转换任何东西,它给你 完全 来自数据库的文本。
您对 un-escape 这些特殊字符的解决方案是正确的。
我在数据库(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 有这种行为?
因为您数据库中的文本不包含 LF 或 CR 个字符,它包含 \
个字符,n
个字符和 r
个字符。所以 Java 没有转换任何东西,它给你 完全 来自数据库的文本。
您对 un-escape 这些特殊字符的解决方案是正确的。