MySQL 采用latin1编码的处理

一个Latin1数据库的处理(Latin1即iso8859-1编码,采用单字节存储数据和传输数据,utf8,gbk数据都能存取,但要做一些转换有点麻烦,实际一般应该都采用utf-8编码):

mysql数据库:

 

对应java处理测试代码,mysql驱动(8.0.27):

 

       Class.forName("com.mysql.jdbc.Driver");
        //高版本驱动才好使(需要支持对应参数),关键是&characterSetResults=ISO8859_1
        //characterEncoding对应:character_set_client和character_set_connection的
        //characterSetResults对应:character_set_results    | latin1
        String url = "jdbc:mysql://192.168.1.1:3306/test1?useUnicode=true&characterEncoding=ISO8859_1&characterSetResults=ISO8859_1";
        String user = "root";
        String password = "root";

        Connection conn = DriverManager.getConnection(url, user, password);// 获取连接
//        excuteSQL(conn,"set names latin1");
        //查询测试
        String str = getStringBySql(conn,"select user_name from user where user_id=1");
        System.out.println(new String(str)); //乱码
        System.out.println(new String(str.getBytes("ISO8859_1"),"UTF-8")); //正确

        //插入测试
        String value = "中文测试";
        excuteSQL(conn,"insert into test1 (name) values ('"+new String(value.getBytes("UTF-8"),"ISO8859_1")+"')"); //正确

        str = getStringBySql(conn,"select name from test1 limit 1");
        System.out.println(new String(str)); //乱码
        System.out.println(new String(str.getBytes("ISO8859_1"),"UTF-8")); //正确

        close(conn);

  

 

posted on 2022-12-07 16:57  webjlwang  阅读(355)  评论(0编辑  收藏  举报

导航