为了账号安全,请及时绑定邮箱和手机立即绑定

Unicode, GBK转UTF-8

Unicode

  1. Unicode是一些数字, 从0000 — 10FFFF 每个数字代表一个字符. Unicode码表
  2. UTF-8, UTF-16, UTF-32是通过Unicode值做的格式转换.
  3. 当Unicode标识在[0000 — FFFF]范围内时, UTF-16存储的值与Unicode标识是一样的.
  4. Java的String类型中的char[]存储的就是UTF-16格式的字符.图片描述

GBK转UTF-8

  1. 场景如下: 数据库设置为UTF-8格式的, 但是里面存储的数据是GBK格式的.
  2. 要求: 从数据库中把数据取出来, 然后按照UTF-8的格式存储进去.
  3. 代码如下:
	t_student表:
	id	|	name
	1		ÖÐÎÄ_Test001
	
	//从数据库中获取数据
	String result = jdbcTemplate.queryForObject("select name from t_student where id = 1", String.class);
	//String中char[]的内容: [214,208,206,196,95,84,101,115,116,48,48,49]
	//其中214,208代表"中", 206,196代表"文",95代表"_"
	
	//这句话的目的是把char转变为byte,因为ISO-8859-1是按照单字节编码的,只会取出char的低8位.
	byte[] arr = result.getBytes("ISO-8859-1");
	//arr中的内容是: [-42,-48,-50,-60,95,84,101,115,116,48,48,49]
	//与result的char[]中内容是相等的.

	//指定arr为GBK格式
	String str = new String(arr,"GBK");
	//这时str存储的就是UTF-16格式的数据了, 也就是Unicode标识.
	//str中char[]的内容是: [4e2d,6587,95,84,101,115,116,48,48,49]
	
	//转成UTF-8字节流格式
	byte[] utf_8s = str.getBytes("UTF-8");
	//utf_8s中的内容: [-28,-72,-83,-26,-106,-121,95,84,101,115,116,48,48,49]
	//-28,-72,-83代表"中"
	//-26,-106,-121代表"文"
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消