java获取数据库数据的字符编码及转码

1. 编写测试类

package com.hontye.parameter.service.impl;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.*;

public class Test {
    public static void main(String[] args) throws ClassNotFoundException, SQLException, UnsupportedEncodingException {
    Test test = new Test();
    String URL="jdbc:mysql://192.168.1.102:3306/hontye_bh20180730";
    String USER="root";
    String PASSWORD="root";
    //1.加载驱动程序
	Class.forName("com.mysql.jdbc.Driver");
    //2.获得数据库链接
    Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    Statement st=conn.createStatement();
    String sql = "select concat(count(1),' 个') gs from ldar_model_ldpoint where sh_status ='4'";
    String encoder = test.getEncoding(sql);
    System.out.println("sql的字符编码:"+encoder);
    ResultSet rs=st.executeQuery(sql);
    //4.处理数据库的返回结果(使用ResultSet类)
	while(rs.next()){
        String s = rs.getString("gs");
        System.out.println("请求得到的值:"+s);
        System.out.println("字符编码为:"+test.getEncoding(s));
        System.out.println("utf-8格式为:" + URLEncoder.encode(s,"utf-8"));
        System.out.println("GBK格式为:" + URLEncoder.encode(s,"GBK"));
        System.out.println("ISO-8859-1格式为:" + URLEncoder.encode(s,"ISO-8859-1"));
        System.out.println("GB2312格式为:" + URLEncoder.encode(s,"GB2312"));
    }
    //5.关闭资源
	rs.close();
	st.close();
	conn.close();
}

    public String getEncoding(String str){

        String encoding = "GBK";
        try {
            if (str.equals(new String(str.getBytes(),encoding))) {
                return encoding;
            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        encoding = "UTF-8";
        try {
            if (str.equals(new String(str.getBytes(),encoding))) {
                return encoding;
            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        encoding = "ISO-8859-1";
        try {
            if (str.equals(new String(str.getBytes(),encoding))) {
                return encoding;
            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        encoding = "GB2312";
        try {
            if (str.equals(new String(str.getBytes(),encoding))) {
                return encoding;
            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值