public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
Writer out = response.getWriter();
//在http的header的信息里告诉浏览器用弹出的方式打开或者保存xml文件,
所以,文件名是按照header的解析方式来编码和解码的,
而 response.setCharacterEncoding("UTF-8");只是设置content的的字符集 。
http的header信息里默认传参使用iso-8859-1
String filename = URLEncoder.encode("干部信息","UTF-8"); //浏览器默认的URLDecoder为utf-8
//create document
Document doc = XmlFileUtil.createDocument(out);
XmlFileUtil.writeXMl(doc);
}
}
package oawork.util;
import java.io.IOException;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
*
* 对XML文档操作的工具类
*/
public class XmlFileUtil {
private static XMLWriter writer;
/**
* 创建Document
* @return
*/
public static Document createDocument(Writer out)
{
OutputFormat format=OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
//去掉xml头
// format.setSuppressDeclaration(true);
// format.isPadText();
writer = new XMLWriter(out,format);
Document doc = DocumentHelper.createDocument();
return doc;
}
public static void writeXMl(Document doc)
{
try
{
writer.write(doc);
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
header默认是按iso-8859-1解析,唯一filename是按utf-8解析的,所以上面的filename要按utf-8单独编码