servlet读取数据库数据 输出为XML时的乱码问题:
恩 首先:你的out对象是先获取的 获取完之后你才设置的字符集,矛盾
你先吧response设置好之后 在进行写入操作
所以要在PrintWriter out = response.getWriter();之前进行字符的设置工作
response.setContentType("text/xml; charset=gb2312");//先设置字符集 然后再取值
response.setHeader("Cache-Control", "no-cache");//顺序放后就会出现错误
PrintWriter out = response.getWriter();
String className, url, uid, pwd;
className = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=text";
uid = "sa";
pwd = "sa";
int l;
try {
Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection cn = DriverManager.getConnection(url, uid, pwd);
Statement sql = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = sql.executeQuery("SELECT yg_name,yg_id FROM yg");
rs.last();
l = rs.getRow();
rs.beforeFirst();
// 设置输出信息的格式及字符集
out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
out.println("<response>");
while (rs.next()) {
out.println("<count>" + l + "</count>");
System.out.println("<name>" + rs.getString("yg_name") + "</name>");
out.println("<name>" + rs.getString("yg_name") + "</name>");
out.println("<name>" + rs.getString("yg_name") + "</name>");
out.println("<ygid>" + rs.getString("yg_id") + "</ygid>");
}
out.println("</response>");
rs.close();
cn.close();
} catch (Exception el) {
el.printStackTrace();
}
}