zoukankan      html  css  js  c++  java
  • 如何解决mysql乱码问题

    问题是这样的,我用struts来做一个用户注册的界面,其中username和sex这2个字段是需要中文的

    但是我在Action调用UserDao来进行插入用户类的时候,发生了乱码的问题


    1.从jsp页面上(gb2312的页面)上传到Action类的UserForm的值应该是乱码的,这时候我们要做第一步的转换编码

    2.从Action类调用UserDao来进行对数据库的数据插入时,我们也需要首先设定数据库的编码格式,否则也会出现乱码

    解决方法一:

    1.首先在UserDao中增加一个编码转换的函数bx

    public String bx(String str) {
    try {
    byte b[] = str.getBytes("iso-8859-1");
    str
    = new String(b);
    }
    catch (Exception e) {
    }
    return str;
    }

    2.在获取中文之后,因为中文是乱码的,必须把编码弄成iso-8859-1才能正常显示中文,所以在插入数据库之前,

    要把需要转换的中文利用bx函数进行转换

    ps = con.prepareStatement("insert into users(name,password,adds,sex,email,age,times) values(?,?,?,?,?,?,?)");

    ps.setString(
    1, bx(uf.getName()));
    ps.setString(
    2, uf.getPassword());
    ps.setString(
    3, bx(uf.getAdds()));
    ps.setString(
    4, bx(uf.getSex()));
    ps.setString(
    5, uf.getEmail());
    ps.setString(
    6, uf.getAge());
    ps.setString(
    7, ts);

    3.修改连接字符串url

    String url = "jdbc:mysql://localhost:3306/" + dbname+"?useUnicode=true&characterEncoding=gbk";

    增加"?useUnicode=true&characterEncoding=gbk"增加这一串代码,主要是设定数据库的编码格式为gbk,记得是小写

    4.数据库是什么编码不重要,重要的是存储中文的字段的编码必须是gb2312,因为这样才能存储中文

    注意name的Column Charset是gb2312 ,sex和adds字段同理,把Column Charset改为gb2312

    解决方法二:

    1.因为在jsp页面传递到ActionForm的时候,中文已经是乱码的,所以我们可以在ActionForm中的reset函数直接就把编码设置为GBK

    public void reset(ActionMapping mapping, HttpServletRequest request) {
    try {
    request.setCharacterEncoding(
    "GBK");
    }
    catch (Exception e) {
    // TODO: handle exception
    }
    }

    2.修改连接字符串url

    String url = "jdbc:mysql://localhost:3306/" + dbname+"?useUnicode=true&characterEncoding=gbk";

    增加"?useUnicode=true&characterEncoding=gbk"增加这一串代码,主要是设定数据库的编码格式为gbk,记得是小写

    3.数据库是什么编码不重要,重要的是存储中文的字段的编码必须是gb2312,因为这样才能存储中文

    注意name的Column Charset是gb2312 ,sex和adds字段同理,把Column Charset改为gb2312

    通过以上2种方法其中之一都可以实现mysql乱码的解决,记住步骤

    1.转换乱码为中文

    2.url修改,数据库编码格式为gbk

    3.中文字段必须为中文编码

  • 相关阅读:
    IE8、IE9解决浏览器跨域。
    英语写作-Introduction
    qt添加图标
    Qt 编译错误 :cannot find file .pro
    python
    数据集
    基金
    visio2010求交操作
    书籍网站
    ROS安装xtion
  • 原文地址:https://www.cnblogs.com/cookies9/p/1933308.html
Copyright © 2011-2022 走看看