在线救答案-jsp与sqlwerver中文问题
我的程序是
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.util.*, java.util.Date,java.text.SimpleDateFormat"
errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<%
request.setCharacterEncoding("gb2312");
String topic=request.getParameter("topic");
byte[] tmpbyte=topic.getBytes("gb2312");
topic=new String(tmpbyte);
String author=request.getParameter("author");
String message=request.getParameter("message");
SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd HH:mm:ss");
String strDate=df.format(new Date());
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=luntan","sa","");
PreparedStatement ps=con.prepareStatement("insert into message(topic,author,date_entered,message) values (?,?,?,?)");
//ps.setInt(1,Integer.parseInt("5"));
// ps.setInt(1,Integer.parseInt("7"));
ps.setString(1,topic);
ps.setString(2,author);
ps.setString(3,strDate);
ps.setString(4,message);
request.setCharacterEncoding("gb2312");
ps.execute();
con.close();
response.sendRedirect("index.jsp");
%>
</body>
</html>
提交到数据库的是乱麻
------解决方案--------------------例子不完整,还要看你参数是如何提交过来.
如果你编码使用GB2312.那么你要确定你提交过来的参数是GB2312编码的.
------解决方案--------------------教你个简单的方法,你可以写一个方法
把字符串-->传入一个字节数组中-->再转换成字符串输出!就可以了
<%!
public String getString(){
String str = s; //接收一个字符串
try{
byte[] buf = str.getBytes("ISO-8859-1");
str = new String(buf);
return str;
}catch(Exception ex){
return str;
}
}
%>
虽然这个办法比较麻烦,但用了以后绝对没有乱码问题出现!
如果你会用过滤器的话,那就不用上面说的方法了!