通过request.getParameter获得中文的数据,然后保存到数据库中,为何在数据库中显示的是乱码。代码如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%  request.setCharacterEncoding("GB2312"); %> 
<%@ page import="java.sql.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
     
<%
        String Namejsp=request.getParameter("Name");  String url="jdbc:oracle:thin:@localhost:1521:test";
String user="admin";
String password="admin";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();

        String sql="insert into program values('"+Namejsp+"');
stmt.executeUpdate(sql); <%out.print("数据库操作成功,恭喜你!");%>
<%
rs.close();
stmt.close();
conn.close();
%>
</body>
</html> 

解决方案 »

  1.   

    先输出request中,得到的值,看是不是中文?在看看oracle的字符集,对不对.
    String sql="insert into program values('"+Namejsp+"');  //这条语句能过去吗
      

  2.   


    <%@ page contentType="text/html; charset=gb2312"%>
     
    <%@ page import="java.sql.*"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body>
        
    <%
    request.setCharacterEncoding("GB2312");
    String Namejsp=request.getParameter("Name");  String url="jdbc:oracle:thin:@localhost:1521:test";
    String user="admin";
    String password="admin";
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement();  String sql="insert into program values('"+Namejsp+"');
    stmt.executeUpdate(sql);  <%out.print("数据库操作成功,恭喜你!");%>
    <%
    rs.close();
    stmt.close();
    conn.close();
    %>
    </body>
    </html> 
      

  3.   

    看数据库是什么字符集,应该是JSP页面和数据库不一致造成的。
      

  4.   

    request.getParameter("Name");后得到的中文字符是正确的,可能就是保存到数据库时变成了乱码,请问如何修改?
      

  5.   

    输入select userenv('language') from dual;后得到SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1这个结果对吗?