[英]Solr 4.10.2 Encoding
要知道的事情:
<?xml version='1.0' encoding='utf-8'?>
开头 情况:
当我使用Solr在Web应用程序中搜索时,如果我搜索Diário这个词,则调用的Solr Url是:
ħ**号码://本地主机:8080 / solr的/选择排序=得分+降序&FQ =%28searchfield%3A%28di%E1rio%29 + OR + ISBN%3A%28di%E1rio%29%29&重量= JSON&json.nl =映射&q =%28searchfield%3A%28di%E1rio%29 + OR + ISBN%3A%28di%E1rio%29 + OR + TITULO%3A%28di%E1rio%29 + OR +作者日期%3A%28di%E1rio%29 + OR + editoraid%3A1%5E0.00001 + OR + editoraid%3A2%5E0.00001 + OR + editoraid%3A133%5E0.00001 + val %3A%22ord%28ano%29%22%29 + AND + status%3A%28active %29&开始= 0&行= 10
如果我使用urldecode(),我得到:
h ** p:// localhost:8080 / solr / select?sort = score desc&fq =(searchfield:(diário)OR isbn:(diário))&wt = json&json.nl = map&q =(searchfield:(diário)OR isbn: (diário)OR titulo:(diário)OR导师:(diário)OR editoraid:1 ^ 0.00001 OR editoraid:2 ^ 0.00001 OR editoraid:133 ^ 0.00001 val :“ ord(ano)”)AND状态:(active)&start = 0行= 10
问题:
当然,问题在于Diário字。
我尝试直接在浏览器中插入以下两个查询:
第一个给我一个错误:HTTP状态400-{msg = URLDecoder:查询字符串/表单数据的位置18之后检测到的无效字符编码(解析为UTF-8),代码= 400}
如果我使用第二个,它就像一个魅力!
我已经看过了,使用mb_detect_encoding()函数,并且据称已将其发送为utf-8编码。
为什么SolrPhpClient使用类似urlencode()的方法,但是却无法对其进行解码?
有人可以帮忙吗?
先感谢您。
最好的祝福,
马塞洛
如您所说,您使用的是Windows-1252作为编码,并且提交的数据在Windows-1252中。 在将其查询或插入到Solr中之前iconv("cp1252", "utf-8", $text)
必须将其转换为UTF-8(通过iconv,例如: iconv("cp1252", "utf-8", $text)
)。
源文件的编码不会影响应用程序中数据的编码,除非与Solr交互时使用UTF-8,否则到处都会遇到问题。 提交和查询Solr时将其转换为UTF-8,并在需要时将其转换回cp1252。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.