码迷,mamicode.com
首页 > 其他好文 > 详细

03 字符集、编码解码、乱码解决

时间:2019-11-21 23:02:47      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:sys   数据   div   不包含   code   set   代码   main   传输   

字符集

  • ASCLL码不包含中文
  • GBK是中文专用
  • Unicode国际通用
  • UTF-8 可变长编码
  • ISO 8859-1

编码解码

编码:字符转二进制,便于传输

示例:

String str = "我是一个好人";

byte[] dates = str.getBytes();//括号汇总可选填字符集名称,表示按某种字符集编码

解码:将二进制机器码转化为字符,便于阅读

示例:将网络上传来的数据转换为字符串

str = new String(dates); //str与dates为上文中的变量。new String的方法请查看String类的构造方法。

乱码解决

转码时导致乱码可能有两种原因:

1.接收的数据不完整

如:str = new String(bytes,0,bytes.length-1);

2.字符集不统一

如:将中文使用ISO-8859-1解码导致乱码

str = new String(sBytes,"ISO-8859-1");

本文代码

public class Charset
{
	public static void main(String[] args){
		String str = "我是好人";
		byte[] sBytes = str.getBytes();//按默认字符集解码
		System.out.println(sBytes.length);
		for(byte b : sBytes){
			System.out.println(b);
		}
		System.out.println("------------------");
		//乱码原因
		//丢失数据
		str = new String(sBytes,0,sBytes.length-1);
		System.out.println(str);//输出结果为:我是好?
		//编码错误
		try{
			str = new String(sBytes,"ISO-8859-1");
		}catch(Exception e){
			System.err.println("解码异常!");
		}
		System.out.println(str);//输出结果:?????
	}
}

  

03 字符集、编码解码、乱码解决

标签:sys   数据   div   不包含   code   set   代码   main   传输   

原文地址:https://www.cnblogs.com/scopicat/p/11908745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!