java mysql的latin1转UTF-8

网上大部分方法:先use  name latin;然后再

System.out.println(new String(s.getBytes("ISO-8859-1"), "UTF-8"));

尝试过以后,完全不好使。


下面方法亲测有效:sql语句正常写,不需要添加use name,得到的string用以下函数转换

public String convertCharset(String s) {
		if (s != null) {
			try {
				int length = s.length();
				byte[] buffer = new byte[length];
				// 0x81 to Unicode 0x0081, 0x8d to 0x008d, 0x8f to 0x008f, 0x90
				// to 0x0090, and 0x9d to 0x009d.
				for (int i = 0; i < length; ++i) {
					char c = s.charAt(i);
					if (c == 0x0081) {
						buffer[i] = (byte) 0x81;
					} else if (c == 0x008d) {
						buffer[i] = (byte) 0x8d;
					} else if (c == 0x008f) {
						buffer[i] = (byte) 0x8f;
					} else if (c == 0x0090) {
						buffer[i] = (byte) 0x90;
					} else if (c == 0x009d) {
						buffer[i] = (byte) 0x9d;
					} else {
						buffer[i] = Character.toString(c).getBytes("CP1252")[0];
					}
				}
				String result = new String(buffer, "UTF-8");
				return result;
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return null;
	}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值