gpt4 book ai didi

java - Tomcat + Servlet + Solr 不正确的国际字符

转载 作者:行者123 更新时间:2023-11-30 09:28:38 25 4
gpt4 key购买 nike

我有一个 Solr 4.0,它在 Postgres 数据库中索引数据(包含多语言字符)。当我通过内置 Jetty 向 Solr 发出直接请求时,我得到了 JSON 形式的正确响应。 Tomcat 7下有一个Servlet运行,负责处理对公共(public)API的请求。此 API 通过 HTTP 获取请求,对执行请求的权限进行某种检查,然后使用 solrj 向 Solr 发出请求,然后将响应作为 JSON 发送。问题是当我通过 Servlet 请求 Solr 时,我总是得到很多 ??????????国际字符应该出现的地方的符号。 DB 中的所有数据都是 UTF-8 编码,Tomcat 的 server.xml 中的 URIEncoding 参数也是 UTF-8。这是我在 Servlet 中编写响应的方式:

public void service(HttpServletRequest req, HttpServletResponse res) throws IOException
{
PrintWriter writer = res.getWriter();
String encoding = req.getCharacterEncoding();
if(null == encoding)
{
req.setCharacterEncoding("UTF-8");
}
else
{
req.setCharacterEncoding(encoding);
}
res.setContentType("application/json; charset=UTF-8");
res.setCharacterEncoding("UTF-8");
String key = req.getParameter(P_KEY);
if (ps.isPartnerKey(key))
{
if (req.getMethod().equals(M_GET))
{
String query = req.getParameter(P_QUERY);
String solr_json = SolrService.getInstance().query(query);
//parse JSON for id's and get images
if (solr_json != null)
{
writer.println(solr_json);
}
}
if (req.getMethod().equals(M_POST))
{
String id = req.getParameter(P_ID);
String field = req.getParameter(P_FIELD);
String value = req.getParameter(P_VALUE);
SolrService.getInstance().partialUpdate(id, field, value);
fs.add(id, field, value, ps.getPartnerId(key));
}
}
else
{
res.sendError(HttpServletResponse.SC_FORBIDDEN);
}
writer.close();
}

这就是我从 Solr 获取数据的方式:

 public String query(String query)
{
SolrQuery solrQuery = new SolrQuery();
solrQuery.set("q", query!=null ? query : "*:*");
solrQuery.set("wt", "json");
String response = "";
try
{
QueryResponse res = solr.query(solrQuery);
response = res.getResults().toString();
log.debug(response);
}
catch (SolrServerException e)
{
e.printStackTrace();
}
return response;
}

我做错了什么吗?可能是什么问题?

最佳答案

您正在提前调用 getWriter。设置字符编码后调用。

关于java - Tomcat + Servlet + Solr 不正确的国际字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13927767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com