插入mysql数据库出现乱码!!!!!急!!!!

niqiu322 2004-08-18 11:33:55
我的代码如下:
<%@ page language="java" contentType="text/html;charset=utf-8" import="java.sql.*"%>
<html>
<head>
<title>Test Tomcat Connection Pool</title>
</head>
<body>
<%
try{
Connection con = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();//载入驱动程序
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/citic?user=root&password=&useUnicode=true&characterEncoding=utf-8");//进行数据池连接
Statement statement = con.createStatement();//创建sql语句对象
statement.executeQuery("insert into user (login_id,user_name,email,company_name,password,hkid_passport,admin_user) values ('d12a12','测试','1112312@163.com','','123','','N')");//执行SQL语句之后的结果赋给RS对象
String pd=new String();

}catch(Exception ex){
out.println(ex.toString());
}
%>
</body>
</html>

插入数据库以后“测试”会变成乱码,不知道怎么回事。网页必须用utf-8的字符集,我弄了一天了都解决不了,请各位大虾帮帮忙。
...全文
357 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bestdelphier 2004-08-23
  • 打赏
  • 举报
回复
to 楼主:
这个问题我前几天也遇到了,我用的是jboss,提交汉字进行转码("8859_1")的话,jboss后台显示正常但mysql中是乱码,后来无意中发现,不转码的话,虽然jboss控制台显示乱码,但是mysql中显示的却正常。
miaoliujun 2004-08-23
  • 打赏
  • 举报
回复
<%@ page language="java" contentType="text/html;charset=utf-8" import="java.sql.*"%>
<html>
<head>
<title>Test Tomcat Connection Pool</title>
</head>
<body>
<%
try{
Connection con = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();//载入驱动程序
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/citic?user=root&password=&useUnicode=true&characterEncoding=utf-8");//进行数据池连接
Statement statement = con.createStatement();//创建sql语句对象
statement.executeQuery("insert into user (login_id,user_name,email,company_name,password,hkid_passport,admin_user) values ('d12a12',new String('测试'.getBytes('utf-8'),'ISO8859_1'),'1112312@163.com','','123','','N')");//执行SQL语句之后的结果赋给RS对象
String pd=new String();

}catch(Exception ex){
out.println(ex.toString());
}
%>
</body>
</html>

对不起,刚才一直没有注意“与‘的区别
假如还不行你把
new String('测试'.getBytes('utf-8'),'ISO8859_1');
用一个字符串变量代替写
祝你好运,如果还有问题请联系
miaoliujun 2004-08-23
  • 打赏
  • 举报
回复
<%@ page language="java" contentType="text/html;charset=utf-8" import="java.sql.*"%>
<html>
<head>
<title>Test Tomcat Connection Pool</title>
</head>
<body>
<%
try{
Connection con = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();//载入驱动程序
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/citic?user=root&password=&useUnicode=true&characterEncoding=utf-8");//进行数据池连接
Statement statement = con.createStatement();//创建sql语句对象
statement.executeQuery("insert into user (login_id,user_name,email,company_name,password,hkid_passport,admin_user) values ('d12a12',new String('测试'.getBytes("utf-8"),"ISO8859_1"),'1112312@163.com','','123','','N')");//执行SQL语句之后的结果赋给RS对象
String pd=new String();

}catch(Exception ex){
out.println(ex.toString());
}
%>
</body>
</html>

这样试试看
miaoliujun 2004-08-23
  • 打赏
  • 举报
回复
<%@ page language="java" contentType="text/html;charset=utf-8" import="java.sql.*"%>
<html>
<head>
<title>Test Tomcat Connection Pool</title>
</head>
<body>
<%
try{
Connection con = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();//载入驱动程序
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/citic?user=root&password=&useUnicode=true&characterEncoding=utf-8");//进行数据池连接
Statement statement = con.createStatement();//创建sql语句对象
statement.executeQuery("insert into user (login_id,user_name,email,company_name,password,hkid_passport,admin_user) values ('d12a12',new String(str.getBytes("utf-8"),"ISO8859_1"),'1112312@163.com','','123','','N')");//执行SQL语句之后的结果赋给RS对象
String pd=new String();

}catch(Exception ex){
out.println(ex.toString());
}
%>
</body>
</html>

这样试试看
wubai250 2004-08-23
  • 打赏
  • 举报
回复
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/citic?user=root&password=&useUnicode=true&characterEncoding=utf-8");//进行数据池连接



将utf-8改成gb2312试一试!
niqiu322 2004-08-23
  • 打赏
  • 举报
回复
up
miaoliujun 2004-08-18
  • 打赏
  • 举报
回复
String str = '测试';
str = new String(str.getBytes("utf-8"),"ISO8859_1");
utf-8,是你现在程序中的字符集
ISO8859_1是你MYSQL的defaut encoding
如果你对应的字符集不是这个,那你改一下就可以了。
niqiu322 2004-08-18
  • 打赏
  • 举报
回复
hyq0077(hyq) 怎么改?
niqiu322 2004-08-18
  • 打赏
  • 举报
回复
关键是插入数库之前的sql语句取得正确的字符,可是一执行executeQuery后,数据库里就得到的是乱码
hyq0077 2004-08-18
  • 打赏
  • 举报
回复
最简单最快捷的办法是把mysql的默认字符集改成与网页用的字符集。
AgathaZ 2004-08-18
  • 打赏
  • 举报
回复
凡是string的字符,你都转码一次
<%
String title="测试";
out.println(new String(title.getBytes(),"ISO-8859-1")+"<br>");
out.println(new String(title.getBytes(),"GBK")+"<br>");
out.println(new String(title.getBytes("ISO-8859-1"),"GB2312")+"<br>");
out.println(new String(title.getBytes("GB2312"),"ISO-8859-1")+"<br>");
out.println(new String(title.getBytes("ISO-8859-1"))+"<br>");
out.println(new String(title.getBytes("GBK"))+"<br>");

out.println("------------------<br>");
out.println(new String(title.getBytes("UTF-8"),"ISO-8859-1")+"<br>");
out.println(new String(title.getBytes("UTF-8"),"GBK")+"<br>");
out.println(new String(title.getBytes(),"UTF-8")+"<br>");
out.println(new String(title.getBytes("GB2312"),"UTF-8")+"<br>");
out.println(new String(title.getBytes("ISO-8859-1"),"UTF-8")+"<br>");
out.println(new String(title.getBytes("UTF-8"))+"<br>");
%>

总会有对的。
xiaochong1651 2004-08-18
  • 打赏
  • 举报
回复
用工具将中文转换为Unicode编码
"\u0202"这种类型
jdk中有这种工具
marvel_ss 2004-08-18
  • 打赏
  • 举报
回复
试试我这个行不?

<%@ page import="java.sql.*"%>

<%

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:JDBCShop";
Connection con=DriverManager.getConnection(url);
PreparedStatement stmt = con.prepareStatement("insert into hacker(name,price) values(?,?)");
String name=request.getParameter("name");
String price=request.getParameter("price");
stmt.setString(1,name);
stmt.setString(2,price);
stmt.executeUpdate();

Statement stm=con.createStatement();
String sql="select * from hacker";
ResultSet rs=stm.executeQuery(sql);
%>
<html>
<body>
<%while(rs.next())
{String Name=new String(rs.getString("name").getBytes("8859_2"));
int Price=rs.getInt("price");
int id=rs.getInt("id");
%>
<a href=1.htm?ID=<%=id%>> <%=Name%> </a>

<%=Price%>
<%
out.println("<br>");
}%>
</body>
</html>
射天狼 2004-08-18
  • 打赏
  • 举报
回复
ChangeCode (aStrSql, "8859_1", "cp850");
取出数据的时候转换一下亥集!!
射天狼 2004-08-18
  • 打赏
  • 举报
回复
//***************************************************
//名称:ChangeCode
//功能:转换指定字符串的字符集(字符编码)
//输入:strSource: 要转换的字符串; strCodeFrom: 源字符集; strCodeTo: 目的字符集
//输出:
//返回:转换之后的字符串
//***************************************************
public String ChangeCode(String strSource, String strCodeFrom, String strCodeTo)
{
byte[] baTemp = null;
try
{
baTemp = strSource.getBytes (strCodeFrom);
strSource = new String (baTemp,strCodeTo);
}
catch (Exception e)
{
return (e.toString ());
}

return (strSource);
}

yyqllxh2004 2004-08-18
  • 打赏
  • 举报
回复
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://192.168.1.61/AddrBook_database?user=heyi&password=123&useUnicode=true&characterEncoding=gb2312";
Connection conn= DriverManager.getConnection(url);
//取值
String username=request.getParameter("username");
username= new String(username.getBytes("ISO8859-1"),"GBK");

这样改一下
niqiu322 2004-08-18
  • 打赏
  • 举报
回复
怎么改呢?

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧