每当我在应用程序中搜索像泰安市这样带有撇号的内容时,该请求就会发送到数据库团队,其内容如下:tai'an city
。它添加了一个额外的“&”号,从而使请求失败(ASCII值'->')。如果手动删除多余的&字符,例如tai'an city
,则请求已成功处理。
如果我手动设置请求或尝试替换'与“”一样
if(paramValue.contains("'")){
paramValue = paramValue.replace("'", "'");
}
但是我知道这不是正确的方法。我想找到这种多余的“&”号的来历。有人知道吗?
最佳答案
您可能在某种形式的选项或URL中有一个撇号,浏览器会将其转换为一个实体,该实体随后被发送到Web应用程序。尝试:
<option value="tai%27an City">tai'an City</option>
<a href="www.example.com/foo?bar=tai%27an City">
如果数据最初以
'
的形式存储在数据库中,则可能是在将其传递给网页中的用户时对其进行了重新编码(即,&
中的'
被重新编码为&
)。例如,如果您使用的是JSP,除非指定c:out
,否则<c:out escapeXml="false">
会转义此类字符。在不知道您正在执行什么步骤的情况下,我无法猜测更多信息,但是我希望这可以指导您解决问题。