插入mysql数据库出现乱码!!!!!急!!!! 用工具将中文转换为Unicode编码"\u0202"这种类型jdk中有这种工具 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 凡是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>");%>总会有对的。 最简单最快捷的办法是把mysql的默认字符集改成与网页用的字符集。 关键是插入数库之前的sql语句取得正确的字符,可是一执行executeQuery后,数据库里就得到的是乱码 String str = '测试';str = new String(str.getBytes("utf-8"),"ISO8859_1");utf-8,是你现在程序中的字符集ISO8859_1是你MYSQL的defaut encoding如果你对应的字符集不是这个,那你改一下就可以了。 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");这样改一下 //*************************************************** //名称: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); } ChangeCode (aStrSql, "8859_1", "cp850");取出数据的时候转换一下亥集!! 试试我这个行不?<%@ 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> con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/citic?user=root&password=&useUnicode=true&characterEncoding=utf-8");//进行数据池连接将utf-8改成gb2312试一试! <%@ 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"),'[email protected]','','123','','N')");//执行SQL语句之后的结果赋给RS对象 String pd=new String(); }catch(Exception ex){ out.println(ex.toString()); } %> </body></html>这样试试看 <%@ 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"),'[email protected]','','123','','N')");//执行SQL语句之后的结果赋给RS对象 String pd=new String(); }catch(Exception ex){ out.println(ex.toString()); } %> </body></html>这样试试看 <%@ 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'),'[email protected]','','123','','N')");//执行SQL语句之后的结果赋给RS对象 String pd=new String(); }catch(Exception ex){ out.println(ex.toString()); } %> </body></html>对不起,刚才一直没有注意“与‘的区别假如还不行你把new String('测试'.getBytes('utf-8'),'ISO8859_1');用一个字符串变量代替写祝你好运,如果还有问题请联系 to 楼主:这个问题我前几天也遇到了,我用的是jboss,提交汉字进行转码("8859_1")的话,jboss后台显示正常但mysql中是乱码,后来无意中发现,不转码的话,虽然jboss控制台显示乱码,但是mysql中显示的却正常。 请问Java Web里面文本域怎么写? 请问高手,关于用JS同时拖拽多个图片的问题 有可配置单据的JAVA包吗 怎么再JSP里实现一个手机抽奖功能~ 三级联动 STRUTS 中 html:hidden 标签的问题。 有关上传图片的进度条问题 怎样把一个session变量的全部值读出来!请各位高手帮助一下! apache 和RESIN整合 求代码?!` 关于用javabean实现搜索子树的问题 有没有办法用sql知道总共多少字段吗?
<%
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>");
%>总会有对的。
str = new String(str.getBytes("utf-8"),"ISO8859_1");
utf-8,是你现在程序中的字符集
ISO8859_1是你MYSQL的defaut encoding
如果你对应的字符集不是这个,那你改一下就可以了。
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");这样改一下
//名称: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);
}
取出数据的时候转换一下亥集!!
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>
<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"),'[email protected]','','123','','N')");//执行SQL语句之后的结果赋给RS对象
String pd=new String(); }catch(Exception ex){
out.println(ex.toString());
}
%>
</body>
</html>这样试试看
<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"),'[email protected]','','123','','N')");//执行SQL语句之后的结果赋给RS对象
String pd=new String(); }catch(Exception ex){
out.println(ex.toString());
}
%>
</body>
</html>这样试试看
<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'),'[email protected]','','123','','N')");//执行SQL语句之后的结果赋给RS对象
String pd=new String(); }catch(Exception ex){
out.println(ex.toString());
}
%>
</body>
</html>对不起,刚才一直没有注意“与‘的区别
假如还不行你把
new String('测试'.getBytes('utf-8'),'ISO8859_1');
用一个字符串变量代替写
祝你好运,如果还有问题请联系
这个问题我前几天也遇到了,我用的是jboss,提交汉字进行转码("8859_1")的话,jboss后台显示正常但mysql中是乱码,后来无意中发现,不转码的话,虽然jboss控制台显示乱码,但是mysql中显示的却正常。