我的查询键中有一个“#”字符,如下所示:
17\#30\#36\#94\#35
因此,查询 url 将生成为:http://10.251.25.12:8080/commentindex/comment/select?q=17\#30\#36\#94\#35&rows=200&wt=json
. 您可以看到,由于存在“#”,url 在发送到服务器之前会被截断,我会得到错误结果、错误行数、错误文档类型(不是我设置的 json)。
对于上面的例子,我将 url 编码为http://10.251.25.12:8080/commentindex/comment/select?q=17%5c%2330%5c%2336%5c%2394%5c%2335&rows=200&wt=json
. 一切都如我所料。但是,如果查询键如下所示,我会遇到另一个错误:
←\~\\(≧▽≦\)\/\~!!|
网址将生成为:
http://10.251.25.12:8080/commentindex/comment/select?q=%e2%86%90%5c%7e%5c%5c(%e2%89%a7%e2%96%bd%e2%89%a6%5c)%5c%2f%5c%7e%ef%bc%81%ef%bc%81%7c&rows=200&wt=json
你找到括号了吗?这是 solr 查询中的特殊字符!我会从 url 得到 400 错误请求。
我注意到所有查询键都用'\'转义了,所以如果我不应该编码整个url而只编码'#'字符?还有其他我应该注意的特殊字符吗?