日期:2014-05-18  浏览次数:20713 次

在线救答案-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;
}
}
%>


虽然这个办法比较麻烦,但用了以后绝对没有乱码问题出现!
如果你会用过滤器的话,那就不用上面说的方法了!