[英]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.