具体情况向mysql中插入数据,数据以及表的编码都是gb2312,但是插入数据库中的数据都是乱码“???????”,
代码:<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" pageEncoding="gb2312" %>
<%@include file ="../DT_inc/ChkPwd.jsp"%><%@include file="../ConnDB.jsp"%>
<%!
   //转换中文字符函数
   public String codetostring(String str)
    {
   String s=str;
   try
     {
   byte tempb[]=s.getBytes("ISO-8859-1");
   s=new String(tempb);
   return s;
 }
   catch(Exception e)
     {
   return s; 
 }  
}
 %>
<html>
<head><title>文章添加</title>
<link href="Style.css" rel="stylesheet" type="text/css" /><script language="javascript">//验证输入数据合法性
function form1_onsubmit()
{  if (document.form1.Title.value=="")
  {
    alert("文章标题不能为空!");
form1.Title.focus();
return false;
  }
  if (document.form1.ClassID.value=="")
  {
    alert("文章所属栏目不能指定为含有子栏目的栏目!");
form1.ClassID.focus();
return false;
  }
  if (document.form1.Key.value=="")
  {
    alert("关键字不能为空!");
form1.Key.focus();
return false;
  }
// getHTML()为eWebEditor自带的接口函数,功能为取编辑区的内容
if (Editor1.getHTML()==""){
alert("文章内容不能为空!");

return false;
}
  
  
  return true;  
}
</script>
</head><body>
<br />
&nbsp; <a href="Article_Manage.jsp">文章管理</a> |&nbsp; <a href="Article_Add.jsp">文章添加</a>
<hr color="#0099FF" size="1" />
<%   
  
if (request.getParameter("Title") !=null)
{
String Title=codetostring(request.getParameter("Title"));
int ClassID=Integer.parseInt(request.getParameter("ClassID"));
String Author=codetostring(request.getParameter("Author"));
String CopyFrom=codetostring(request.getParameter("CopyFrom"));
String Key=codetostring(request.getParameter("Key"));
String Content=codetostring(request.getParameter("Content"));
Statement stmt_ADD=conn.createStatement();
String Sql="insert into tArticle (fTitle,fClassID,fAuthor,fCopyFrom,fKey,fContent) values ('"+Title+"',"+ClassID+",'"+Author+"','"+ CopyFrom+"','"+Key+"','"+Content+"')";
int add1=stmt_ADD.executeUpdate(Sql);
if (add1>0){
out.print("<p align='center'>文章:["+ Title +"] 添加成功</p>");
}
stmt_ADD.close();
}%><form id="form1" name="form1" method="post" action="" onSubmit="return form1_onsubmit()">
 
  <table width="750" border="0" align="center">
    <tr>
      <td width="100">文章标题:</td>
      <td><input name="Title" type="text" id="Title" size="40" /></td>
    </tr>
    <tr>
      <td>所属栏目:</td>
      <td>
<%Statement stmt_ArticleClass=conn.createStatement();

String SqlArticleClass="Select * from tArticleClass order by fParentID=0";
ResultSet RsArticleClass=stmt_ArticleClass.executeQuery(SqlArticleClass);

%>
  <select name="ClassID" id="ClassID">
   <%
while (RsArticleClass.next())
{
int ArticleClass_ClassID=RsArticleClass.getInt("fClassID");

%>
<option value="<%=ArticleClass_ClassID%>">
<%if(RsArticleClass.getInt("fParentID")!=0) out.print("&nbsp;&nbsp;&nbsp;&nbsp;");%>
<%=RsArticleClass.getString("fClassName")%></option>
<%
}
%>
      </select>
  <%
RsArticleClass.close();
stmt_ArticleClass.close();
  %>      </td>
    </tr>
    <tr>
      <td>作者:</td>
      <td><input name="Author" type="text" id="Author" /></td>
    </tr>
    <tr>
      <td>转贴自:</td>
      <td><input name="CopyFrom" type="text" id="CopyFrom" /></td>
    </tr>
    <tr>
      <td>关键字</td>
      <td><input name="Key" type="text" id="Key" /></td>
    </tr>
    <tr>
      <td valign="top"><p>文章内容:</p>
      <p>&middot; 如果是从其它网站上复制内容,并且内容中包含有图片,本系统将会把图片复制到本站服务器上,系统会因复制图片的大小而影响速度,请稍候(此功能需要服务器安装了IE5.5以上版本才有效)。</p>
      <p>&middot; 换行请按Shift+Enter&middot; 另起一段请按Enter</p></td>
      <td>
<%
//ewebeditor.jsp文件调用的参数:
//id:下面表单项textarea的名称,在此表单中是Content,注意大小写
//style:编辑器的样式名称,DT_coolblue
//originalfilename:用于获取源文件名的表单项名,在此表单中是d_originalfilename
//savefilename:用于获取保存文件名的表单项名,在此表单中是d_savefilename
//SavePathFileName:用于获取保存带路径文件名的表单项名在此表单中是SavePicPathFileName
%>
  
<textarea name="Content" style="display:none"></textarea>
  <IFRAME ID="Editor1" src="../DT_inc/Editor/eWebEditor.jsp?id=Content&style=standard&originalfilename=d_originalfilename&savefilename=d_savefilename&SavePathFileName=SavePicPathFileName" frameborder="0" scrolling="no" width="650" height="350"></IFRAME>   </td>
    </tr>
         <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="添加" />
      <input type="reset" name="Reset" value="重置" /></td>
    </tr>
  </table>
</form>
<p>&nbsp;</p>
</body>
</html>
<%
conn.close(); //关闭连接对象
%>
数据库连接代码:<%
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jiudian?useUnicode=true&characterEncode=GBK","root","123456");
%>请高手指点一下

解决方案 »

  1.   

     byte tempb[]=s.getBytes("ISO-8859-1");
       s=new String(tempb,"gb2312"); 
      

  2.   

    记得是改my.ini 里面的setEncoding吧.
    反正ctrl+f找到utf-8之类的改成的gb2312的.不过以前是查到,改了也不好用,重起机器也不行.
    我以前都是保存数据库,然后重装mysql在在安装时倒数第二步设置默认格式为gb2312就好了.
    最后一步别轻易execute就行了,注意先看看设没设
      

  3.   


    三楼的是对的 对于MySql的乱码问题有三种情况  我以前回答过一个 我给你找到贴出来 你看看!~
      

  4.   

    解决MySql数据乱码: 1 写过滤器设置编码格式(格式和JSP页面的编码一样),或则在请求里面写request.setCharacterEncoding("编码方式"); 2 如果是查询出数据乱码,在链接的URL上加上编码格式(你这里加了,没问题); 3 修改my.ini文件里面的 default-character-set= 您要的编码格式 (一共有两处,你查找一下 改为一样的编码格式) 3 如果是写入到数据库之后是乱码(前提是已经写了过滤器处理编码),修改my.ini文件里面查找sql-mode 设置 sql-mode =  
      "NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; 试试吧!   这是所有乱码的情况! 我用的是MYSQL5.0 解决乱码就这样搞的!!!!!!!
      

  5.   

    mysql数据库的默认编码是latin1,改为gb2312就好了
      

  6.   

    http://blog.csdn.net/guying1028/archive/2007/09/26/1801044.aspx
    看看这个,所有的mysql的乱码问题都会解决的。
      

  7.   

    1.byte tempb[]=s.getBytes("ISO-8859-1");  
       s=new String(tempb,"gb2312");  
    2.mysqld 的字符集
    Statement stmt_ADD=conn.createStatement(); 
    stmt_ADD.execute("set names gb2312");   
      

  8.   

      1.数据库的 client charset 设为 gb2312  2.jsp页面 pageEncoding="gb2312"  3.请求中 
         byte tempb[]=s.getBytes("ISO-8859-1"); 
        s=new String(tempb,"gb2312");