Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javaservlet和googleappengine中的编码_Java_Google App Engine_Servlets_Character Encoding - Fatal编程技术网

javaservlet和googleappengine中的编码

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

我正在使用谷歌应用引擎从数据库中检索数据。当我检索阿拉伯语文本时,它会返回类似于“§??????”的内容

以下是HttpServlet:

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("السلام عليكم:");
  }
}