转换gbk所占用字节长度以及是否为中文

转换gbk所占用字节长度以及是否为中文

简单看一下在java中各个类型字符串转换gbk所占用的字节,有时可能会使用字节所占用长度来进行一些判断,希望能有所帮助。废话不说,上码:


		String data = "ABCDEFG-啊吧吃的额发个(1)";//随便定义一个字符串,方便下边看结果,包含字符、字母和汉字
		String eng = "A";
		String ch = "啊";
		String zifu = "-";
		String shuzi = "1";
		byte[] bytes;
		try {
			bytes = data.getBytes("gbk");//转换后中文两个字符,英文以及符号都是一个字符。
			//可以在这里看一下转换前后的字符长度
			System.out.println("转换前字符长度:"+data.length());
			System.out.println("转换后字符长度:"+bytes.length);
			/**
			 * 转换前字符长度:18
			 * 转换后字符长度:25
			 */
			//分别看一下汉字、英文、数字以及字符的长度变化
			System.out.println("英文转换前的字符长度:"+ eng.length());
			System.out.println("汉字转换前的字符长度:"+ ch.length());
			System.out.println("字符转换前的字符长度:"+ zifu.length());
			System.out.println("数字转换前的字符长度:"+ shuzi.length());
			System.out.println("英文转换后的字符长度:"+ eng.getBytes("gbk").length);
			System.out.println("汉字转换后的字符长度:"+ ch.getBytes("gbk").length);
			System.out.println("字符转换后的字符长度:"+ zifu.getBytes("gbk").length);
			System.out.println("数字转换后的字符长度:"+ shuzi.getBytes("gbk").length);
			/**
			 * 英文转换前的字符长度:1
			 * 汉字转换前的字符长度:1
			 * 字符转换前的字符长度:1
			 * 数字转换前的字符长度:1
			 * 英文转换后的字符长度:1
			 * 汉字转换后的字符长度:2
			 * 字符转换后的字符长度:1
			 * 数字转换后的字符长度:1
			 */
			//判断转换后指定字符是否为汉字 这里用英文和汉字举例
			if(bytes[0] >=0 && bytes[0] <= 127){
				System.out.println("输出结果为:"+bytes[0]);
			} else {
				System.out.println("该值是汉字,转换后的字符为:"+bytes[0]);
			}
			/**
			 * 输出结果为: 65
			 */
			if(bytes[8] >=0 && bytes[8] <= 127){
				System.out.println("输出结果为:"+bytes[8]);
			} else {
				System.out.println("该值是汉字,转换后的字符为:"+bytes[8]);
			}
			/**
			 * 该值是汉字,转换后的字符为:-80
			 */
			//对于这个字节截取字符的方法
			String newData = new String(bytes,0,7,"gbk");
			System.out.println(newData);
			//输出结果为:ABCDEFG
			//如果需要截取中文,可以截取后使用正则验证一下是否是汉字,
			 //如果不是前一位截取或者后一位截取就看大家的想法啦,如果想不通可以m我
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值