2012-06-13 36 views
0

我在Win7 64bit上向Tomcat 6.0.35部署了一個war,並且在Solr Admin中使用了全接口查詢頁面(我的意思是form.jsp)查詢2中國字符(說這是C1C2),調試信息顯示:爲什麼Solr管理查詢頁面將UTF-8解釋爲ISO-8859-1

<lst name="debug"> 
    <str name="rawquerystring">æ°è</str> 
    <str name="querystring">æ°è</str> 
    <str name="parsedquery">NEWSID:æ°è</str> 
    <str name="parsedquery_toString">NEWSID:æ°è</str> 
... 

你可以看到C1C2變得æ°E。我將相同的war文件部署到Linux上的Tomcat或我同事的另一臺Win7 64bit計算機上,編碼效果很好。有誰知道爲什麼以及如何避免這個問題?

在此先感謝!

回答

0

我解決了這個問題。邪惡是Win7的文件虛擬化功能。默認情況下,Win7將在幾個衆所周知的文件夾上啓用此功能,例如Windows,Program Files,ProgramData等。其效果是,在某些情況下,文件將具有雙重內容,這恰好發生在我的server.xml上。

的解決方法是在乾淨的東西 'C:\用戶\ <用戶帳戶> \應用程序數據\本地\ VirtualStore'。長時間的解決方案是「不要在這些知名的文件夾中安裝Tomcat,如果你堅持,一定不要安裝 - '不要卸載太多次」。

~~~我如何找到這個問題(你可能不需要看到這個)~~~

兩個詞:「純粹是運氣」。當我使用一些XML編輯器來編輯tomcat-users.xml並添加一個用戶'測試'時。我重新啓動Tomcat,但無法登錄以使用管理器UI。我重新檢查tomcat-users.xml並看到用戶確實已設置。即使我卸載 - '不安裝不同版本的Tomcat,登錄仍然失敗。

然後我用記事本編輯tomcat-users.xml,我驚訝地發現它是Tomcat安裝的原始版本。用記事本編輯並重新啓動Tomcat後,我現在可以登錄。

很快,我的想法閃爍到server.xml,並使用記事本來查看它。啊哈!在連接器標籤中沒有URIEncoding屬性。修好後,問題就解決了。

Eiplog

就我而言,我的XML編輯器和IE瀏覽器都顯示錯誤的版本,但我的其他的browers和記事本顯示正確的版本。我仍然不知道Win7在文件虛擬化上使用的算法是什麼,所以我認爲解決方法將存在一段時間。