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);
浙公网安备 33010602011771号