繁体   English   中英

Solr 4.10.2编码

[英]Solr 4.10.2 Encoding

要知道的事情:

  • 我在Tomcat 8中本地使用Solr 4.10.2
  • 我在Netbeans IDE中的设置是: 编码: Windows-1252 | PHP: 5.3(需要采用这种方式)
  • 我在Windows 7 x64中使用xampp 1.7.7
  • 我来自Tomcat的server.xml文件以<?xml version='1.0' encoding='utf-8'?>开头
  • 我来自Tomcat的server.xml文件在连接器标签中具有此URIEncoding =“ UTF-8”
  • 我的php SolrPhpClient文件使用UTF-8编码,没有BOM

情况:

当我使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM