我用JSP+JAVABEAN接入数据库的..写入MS_SQL代码如下...请问怎样能够处理乱码问题?
//MessageBean.java
package boy;
import java.sql.*;
import java.util.*;public class MessageBean {
private Connection con;
MessageVO  msg;
public MessageBean()
{
String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String SERVANDDB="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=topic ";
String USER="sa";
String PWD="";
  try{
  Class.forName(CLASSFORNAME);
  con=DriverManager.getConnection(SERVANDDB,USER,PWD);  

  }
  catch(Exception e)
  {e.printStackTrace();}}
public void setMessage(MessageVO msg)
{
this.msg=msg;
}
public void addMessage()
{
try{
PreparedStatement stm=con.prepareStatement("insert into message values(?,?,?,?,?)");
stm.setString(1,msg.getTitle());
stm.setString(2,msg.getName());
stm.setDate(3,new java.sql.Date(new java.util.Date().getDate()));
if((msg.getEmail()).length()==0)
stm.setString(5,null);
else
stm.setString(5,msg.getEmail());
stm.setString(4,msg.getContent());

try
{
stm.executeQuery();
}
catch(Exception e)
{
}
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public Collection getMessage()
throws Exception
{
Collection ret=new ArrayList();
try{
Statement stm=con.createStatement();
ResultSet result=stm.executeQuery("select count(*) from message");
int message_count=0;
if(result.next())
{
message_count=result.getInt(1);
result.close();
}
if(message_count>0)
{
result=stm.executeQuery("select * from message ");
while(result.next())
{
String title=result.getString("title");
String name=result.getString("name");
String mail=result.getString("mail");
String content=result.getString("content");
java.sql.Date today=result.getDate("today");
MessageVO message=new MessageVO();
message.setName(name);
message.setTitle(title);
    message.setContent(content);
message.setDate(today);
message.setEmail(mail);
ret.add(message);
}
result.close();
stm.close();
}
con.close();
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
return ret;
}
}
//addMessage.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,boy.*,java.util.*,java.sql.*"%> 
<jsp:useBean id="messageVo" class="boy.MessageVO" scope="page"/>
<jsp:setProperty name="messageVo" property="*"/>
</jsp:useBean>
<jsp:useBean id="messageBean" class="boy.MessageBean" scope="page"/>  %>
<%
try
{
messageBean.setMessage(messageVo);
messageBean.addMessage();
}
catch(Exception e)
{
e.printStackTrace();
}
%>
问题主要在这二个文件中吧...我是用直联方法连入SQL2000的~主要是写入数据库时出现乱码,请问怎样才能解决这个问题?

解决方案 »

  1.   

    字符转码
    如果是WEB应用就用request.setCharacterEncoding("utf-8");将请求的信息转码成数据库的字符集
    或者可将单个字符进行转码:比如 String a = "哈哈"; Sting b  =new String(a.getBytes("ISO-8859-1"),"utf-8");b字符串就是经过转码后的
      

  2.   

    用过滤器request.setCharacterEncoding("GBK");
     Sting   b     =new   String(a.getBytes("ISO-8859-1"),"GBK");
    基本上和楼上一样
    据说用GBK的网络带宽比较小 呵呵
      

  3.   

    解决方法一:在eclipse中将应该项目的默认字符格式设成和mysql安装时一样(可以都是GBK或都是utf-8(在mysql中utf8))解决方法二是同楼上每一处都用Sting  b   = new String(a.getBytes("ISO-8859-1"),"GBK");