【问题标题】:Why Solr admin query page interprets UTF-8 as ISO-8859-1为什么 Solr 管理查询页面将 UTF-8 解释为 ISO-8859-1
【发布时间】:2012-06-13 04:37:09
【问题描述】:

我在 Win7 64 位上将战争部署到我的 Tomcat 6.0.35 并且当我在 Solr Admin 中使用全界面查询页面(我的意思是 form.jsp)来查询 2 个汉字(比如说它是 C1C2)时,调试信息显示:

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

你可以看到 C1C2 变成了æ°è。我将相同的war文件部署到Linux上的Tomcat或同事计算机的另一台Win7 64位上,编码效果很好。有谁知道为什么以及如何避免这个问题?

提前致谢!

【问题讨论】:

    标签: encoding utf-8 solr iso-8859-1


    【解决方案1】:

    我解决了这个问题。邪恶是Win7 的文件虚拟化 功能。默认情况下,Win7 会在几个知名文件夹上启用此功能,例如Windows、Program Files、ProgramData 等。效果是在某些情况下,一个文件会有双重内容,而这恰好发生在我的 server.xml 上。

    解决方法是清理 'c:\Users\\AppData\local\VirtualStore' 中的内容。长期以来的解决方案是“不要在这些知名文件夹中安装Tomcat。如果你坚持,请确保不要安装 - 'n - 卸载太多次。”

    ~~~我是怎么发现这个问题的(你可能不需要看这个)~~~

    两个字:“纯属运气”。当我使用一些 xml 编辑器编辑 tomcat-users.xml 并添加用户“测试”时。我重新启动 Tomcat 但无法登录以使用管理器 UI。我重新检查了 tomcat-users.xml 并看到确实设置了用户。即使我卸载-'n-安装不同版本的Tomcat,登录仍然失败。

    然后我使用记事本编辑 tomcat-users.xml,我惊讶地发现它是 Tomcat 安装的原始版本。用记事本编辑后重启Tomcat,就可以登录了。

    很快,我的想法闪现到server.xml,我用记事本查看。啊哈!连接器标记中没有 URIEncoding 属性。修复后,问题就解决了。

    Eiplog

    在我的情况下,我的 xml 编辑器和 IE 都显示错误的版本,但我的其他浏览器和记事本显示正确的版本。我仍然不知道Win7在文件虚拟化上使用了什么算法,所以我认为解决方法会存在一段时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2014-08-29
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多