UTF-8阿拉伯语与HttpServletResponse截断输出

时间:2014-07-29 06:30:30

标签: java maven java-ee utf-8

我有一个脚本输出一些包含UTF-8字符的XML。 它适用于拉丁语言(éàœ,...)但输入阿拉伯字符时失败:输出被截断为第一个阿拉伯字符(ضصيضص)。

我的代码看起来像这样:

public void doGet(HttpServletRequest req, HttpServletResponse res) {
        //...
        res.setCharacterEncoding("UTF-8");
        res.setContentType("text/xml; charset=utf-8");
        String xml = getXMLString();
        LOG.debug(xml); // Output is correct here 
        op.print(xml);
        op.flush();
        op.close();
}

此外,当我将其显示为HTML

时,它显示正确

1 个答案:

答案 0 :(得分:4)

使用可以向客户端发送字符串的HttpServletOutputStream PrintWriter getWriter,而不是ServletResponse(对于二进制数据)。

 res.setCharacterEncoding("UTF-8");
 res.setContentType("text/xml; charset=utf-8");
 PrintWriter writer = res.getWriter();
 //now write your text