我好像遇到问题了我有一个查询字符串,其中的值可以包含单引号。这将破坏查询字符串。所以我试图做一个替换来改变'
to \'
.
这是示例代码:
"This is' it".replace("'", "\'");
其输出仍然是:
"This is' it".
它认为我只是在为引用做一个转义字符。
所以我尝试了这两段代码:
"This is' it".replace("'", "\\'"); // \\ for the backslash, and a ' char
"This is' it".replace("'", "\\\'"); // \\ for the backslash, and \' for the ' char
上述两者仍然会产生相同的输出:
"This is' it"
我似乎只能让它真正吐出一条斜线:
"This is' it".replace("'", "\\\\'");
结果是:
"This is\\' it"
有什么建议么?我只是想更换一个'
with \'
.
看起来应该不那么困难。
首先,如果您尝试对查询字符串的撇号进行编码,则需要对它们进行 URL 编码,而不是使用前导反斜杠进行转义。用于该用途URLEncoder.encode(String, String) http://download.oracle.com/javase/6/docs/api/java/net/URLEncoder.html#encode%28java.lang.String,%20java.lang.String%29(顺便说一句:第二个参数应该始终是"UTF-8"
)。其次,如果要将撇号的所有实例替换为反斜杠撇号,则必须使用前导反斜杠转义字符串表达式中的反斜杠。像这样:
"This is' it".replace("'", "\\'");
Edit:
我现在发现您可能正在尝试动态构建 SQL 语句。Do not这样做。您的代码很容易受到 SQL 注入攻击。相反,使用PreparedStatement
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)