java - 为什么Java在从DB读取它们时将\n\r转换为\\n\\r

标签 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 字符 转换为\\n\\r,这意味着没有任何 <我的应用程序中最终字符串中的strong>LF和CR字符。

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

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

最佳答案

由于数据库中的文本不包含 LFCR 字符,因此包含 \ 字符,n 字符和 r 字符。因此,Java 不会转换任何内容,它会为您提供准确数据库中的文本。

您取消转义这些特殊字符的解决方案是正确的。

关于java - 为什么Java在从DB读取它们时将\n\r转换为\\n\\r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49426914/

相关文章:

linux - 防止在 cut 命令中换行

java - 使用 Java 应用程序远程连接到 H2 数据库

oracle - h2 数据库上的条件唯一索引

java - Spring MVC jsp 标记值的标记占位符

java - 如何使用 SuperCsv 隔离类的实例?

java - 为什么自定义组件没有显示在 JFrame 上?

database - 如何避免 'Could not determine Hibernate dialect for database name [H2]!' ?

java - 使用 kafka-streams 有条件地对 json 输入流进行排序

Java BufferedWriter - newLine() 方法

windows - 如何将 DOS/Windows 换行符 (CRLF) 转换为 Unix 换行符 (LF)