zoukankan      html  css  js  c++  java
  • java+mysql中文乱码问题

    乱码问题原因有多种,其中有一种是由于MySQL默认使用 ISO-8859-1 ( 即Latin1 ) 字符集,而JAVA内部使用Unicode编码,因此在JAVA中向MYSQL数据库插入数据时,或者读取数据时,都需要先转换一下编码方式。当然,如果可以直接修改配置文件的话,也可以解决乱码问题,然而某些情况下,我们并不能直接接触到配置文件(例如你是买的网上的空间),此时,我们可以采取编码格式转换的方法。

    详细方法参考以下博客。

    http://ghostgate.blog.163.com/blog/static/20570131200811442747326/

    插入数据:

    如:

    ...

    String str="中文";

    String sql = "insert into Tb (xxx) values (?)"

    PreparedStatement pstmt = conn.prepareStatement(sql);

    pstmt.setString(1,str);

    pstmt.executeUpdate();

    这样插入到Mysql数据库后,用mysql.exe连接查看数据可以看到,插入数据变成了几个“?”呈,也即成了乱码。

    解决方法是:

    String str="中文";

    str = new String(str.getBytes(),"ISO8859_1");         //加入此句,改变编码为iso-8859-1

    String sql = "insert into Tb (xxx) values (?)"

    PreparedStatement pstmt = conn.prepareStatement(sql);

    pstmt.setString(1,str);

    pstmt.executeUpdate(); 

    读取数据:

    方法与插入数据类似,如下:

    ...

    String str = rs.getString(1);

    str = new String(str.getBytes("ISO8859_1"));     //由ISO8859-1编码还原为JAVA内部默认字符集

    //或者 str = new String(str.getBytes("ISO8859_1"),"GBK");

  • 相关阅读:
    简单的远程控制软件
    VS集成环境中的JavaScript脚本语法检查
    vs2022安装
    有关httpContext.Current.Session[值] 取值的问题
    【python3.7】文件操作
    148. 排序链表
    11. 盛最多水的容器
    23. 合并K个升序链表
    147. 对链表进行插入排序
    146. LRU 缓存机制
  • 原文地址:https://www.cnblogs.com/orange-tree/p/3560203.html
Copyright © 2011-2022 走看看