具体情况:向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 />
<a href="Article_Manage.jsp">文章管理</a> | <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(" ");%>
<%=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>· 如果是从其它网站上复制内容,并且内容中包含有图片,本系统将会把图片复制到本站服务器上,系统会因复制图片的大小而影响速度,请稍候(此功能需要服务器安装了IE5.5以上版本才有效)。</p>
<p>· 换行请按Shift+Enter· 另起一段请按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> </td>
<td><input type="submit" name="Submit" value="添加" />
<input type="reset" name="Reset" value="重置" /></td>
</tr>
</table>
</form>
<p> </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");
%>请高手指点一下
代码:<%@ 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 />
<a href="Article_Manage.jsp">文章管理</a> | <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(" ");%>
<%=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>· 如果是从其它网站上复制内容,并且内容中包含有图片,本系统将会把图片复制到本站服务器上,系统会因复制图片的大小而影响速度,请稍候(此功能需要服务器安装了IE5.5以上版本才有效)。</p>
<p>· 换行请按Shift+Enter· 另起一段请按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> </td>
<td><input type="submit" name="Submit" value="添加" />
<input type="reset" name="Reset" value="重置" /></td>
</tr>
</table>
</form>
<p> </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");
%>请高手指点一下
s=new String(tempb,"gb2312");
反正ctrl+f找到utf-8之类的改成的gb2312的.不过以前是查到,改了也不好用,重起机器也不行.
我以前都是保存数据库,然后重装mysql在在安装时倒数第二步设置默认格式为gb2312就好了.
最后一步别轻易execute就行了,注意先看看设没设
三楼的是对的 对于MySql的乱码问题有三种情况 我以前回答过一个 我给你找到贴出来 你看看!~
"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; 试试吧! 这是所有乱码的情况! 我用的是MYSQL5.0 解决乱码就这样搞的!!!!!!!
看看这个,所有的mysql的乱码问题都会解决的。
s=new String(tempb,"gb2312");
2.mysqld 的字符集
Statement stmt_ADD=conn.createStatement();
stmt_ADD.execute("set names gb2312");
byte tempb[]=s.getBytes("ISO-8859-1");
s=new String(tempb,"gb2312");