要客户端输入姓名,然后保存到oracle数据库中,英文可以,中文保存进去的就是乱码了。(oracle中原来的中文是正常的,只有插入的才是乱码)
连接代码:Class.forName("oracle.jdbc.driver.OracleDriver");
conn=(Connection) DriverManager.getConnection("jdbc:oracle:thin:@172.18.80.186:1521:xx","aa","bb");
dao代码://添加
public boolean addBook(Book book){
try {
Connection conn=(Connection) DBConn.getConn();
PreparedStatement pstmt=conn.prepareStatement("insert into s201_11 values (?,?)");
pstmt.setString(1, book.getId());
pstmt.setString(2, book.getName());
System.out.println(book.getId());
System.out.println(book.getName());
pstmt.execute();
return true;

} catch (Exception e) {
e.getStackTrace();
return false;
}finally{
DBConn.CloseConn();
}

}
显示添加成功,但再数据库里是乱码:
3 ?·????
再次查询也是乱码。怎么办?

解决方案 »

  1.   

    调用dao之前应该对中文进行编码,使编码与数据库编码保持一致。
      

  2.   

    肯定是你前台页面使用的编码格式是默认的iso-8859-1的编码格式
    不知道你是用servlet还是struts2 还是dofilter来处理中文问题、
    servlet 的话  把response 和request 的 .setCharacterEncoding("utf-8");  格式  在用之前就要处理他们的编码
    struts2的话  不知道你用的什么版本 如果是2.1.7+的话  有个struts.xml 可以配置  应该是i18n那个
    dofilter的话  先把他们都拦截 在设定编码格式  
      

  3.   

    你可以在addBook(Book book) 方法 在插入数据库之前把book打印到控制台看看  
    要是乱码就证明前台页面传过来的时候就有问题
      

  4.   


    在调用dao之前就是乱码,我用的sturts2,版本是2.0的,怎么设置编码格式???
      

  5.   

    csdn回复没有字体颜色设置了呢?  0.0jsp的编码格式是什么? 不会是默认的iso-8859-1吧、改成编码集统一的、【例子为utf-8】【方法1】:action的execute方法里可以获取到response和request、
    用【ServletActionContext.getRequest() 、和ServletActionContext.getResponse()】
    然后设定他们的编码格式相当于设定request和response的编码集、ServletActionContext.getRequest().setCharacterEncoding("utf-8");
    ServletActionContext.getResponse().setCharacterEncoding("utf-8");
    【方法2】:设置一个filter,放在struts2拦截之前,具体参考filter拦截知识
    <filter>
            <filter-name>struts-cleanup</filter-name>
            <filter-class>
                org.apache.struts2.dispatcher.ActionContextCleanUp
            </filter-class>       
        </filter>
       
        <filter-mapping>
            <filter-name>struts-cleanup</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    【方法3】:
    在struts.xml里设置编码
    <!--指定web应用的默认编码集-->
    <constant name="struts.i18n.encoding" value="utf-8">
    </constant>【struts.xml】一改动就需要重新启动服务器、设置一个方法模式就方便开发了