【发布时间】:2013-03-27 12:04:16
【问题描述】:
我有一个关于 java 中用于 JDBC 的 ResultSet.getString() 方法的简单查询。
假设 Database 列中的值有一个 \,它是 javas 转义字符,例如\n 或 \t 等
当我将值检索为getString() 时,我看到又添加了一个转义字符,而这个\n 的实际含义现在只是一个字符串文字。
所以我不得不取消转义java,然后正确使用它。
String s= rs.getString("col_name");
当s 包含`\n'时:
System.out.println(s)
输出:
\n
使用 apache common StringEscapeUtils 对 java 进行转义后
输出:
System.out.println("hi"+s+"hello");
hi
hello
我的问题是谁在取消转义之前添加了这个额外的\?
对不起,如果这是一个愚蠢的问题。
【问题讨论】:
-
看起来 JDBC 正在转义所有特殊字符以确保文本以存储在 DB 中的方式显示。因此,如果您在 DB 中有 hello\nworld,则在获取时它将变为
hello\\nworld。看起来应该是这样。 -
@svz JDBC 不会转义
ResultSet中的任何内容。 那是应该的。否则,许多应用程序将无法了解数据库中的真正内容以及某些任意层发生了哪些变化。
标签: java escaping resultset getstring