javaservlet和googleappengine中的编码
我正在使用谷歌应用引擎从数据库中检索数据。当我检索阿拉伯语文本时,它会返回类似于“§??????”的内容 以下是HttpServlet:javaservlet和googleappengine中的编码,java,google-app-engine,servlets,character-encoding,Java,Google App Engine,Servlets,Character Encoding,我正在使用谷歌应用引擎从数据库中检索数据。当我检索阿拉伯语文本时,它会返回类似于“§??????”的内容 以下是HttpServlet: public class MyServlet extends HttpServlet { @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { PrintWriter write
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
PrintWriter writer = response.getWriter();
final String contentType = "text/plain;charset=UTF-8";
final String characterEncoding = "UTF-8";
response.setContentType(contentType);
response.setCharacterEncoding(characterEncoding);
writer.println(response.getContentType());
writer.println(response.getCharacterEncoding());
writer.println("السلام عليكم:");
}
}
输出为:
text/plain; charset=iso-8859-1
ISO-8859-1
?§???³???§?? ?¹????????:
appengine-web.xml:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>myApplicationID</application>
<use-google-connector-j>true</use-google-connector-j>
<version>1</version>
<threadsafe>true</threadsafe>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
<property name="file.encoding" value="UTF-8" />
<property name="appengine.file.encoding" value="UTF-8" />
<property name="DEFAULT_ENCODING" value="UTF-8" />
</system-properties>
<env-variables>
<env-var name="DEFAULT_ENCODING" value="UTF-8" />
</env-variables>
</appengine-web-app>
我找到了解决办法
问题是,我在设置内容类型之前获取了writer
因此,代码应该是:
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
final String contentType = "text/plain;charset=UTF-8";
final String characterEncoding = "UTF-8";
response.setContentType(contentType);
response.setCharacterEncoding(characterEncoding);
PrintWriter writer = response.getWriter();
writer.println(response.getContentType());
writer.println(response.getCharacterEncoding());
writer.println("السلام عليكم:");
}
}
我找到了解决办法
问题是,我在设置内容类型之前获取了writer
因此,代码应该是:
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
final String contentType = "text/plain;charset=UTF-8";
final String characterEncoding = "UTF-8";
response.setContentType(contentType);
response.setCharacterEncoding(characterEncoding);
PrintWriter writer = response.getWriter();
writer.println(response.getContentType());
writer.println(response.getCharacterEncoding());
writer.println("السلام عليكم:");
}
}