簡體   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