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

Posted scopicat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03 字符集编码解码乱码解决相关的知识,希望对你有一定的参考价值。

字符集

  • 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 字符集编码解码乱码解决的主要内容,如果未能解决你的问题,请参考以下文章

字符编码与解码

URL请求中文符号“乱码”(解码转码)解决方式

怎么解决js解码base64中文乱码问题

关于乱码问题的解决与HttpServletResponse中的方法

HttpServletResponse应用中文输出乱码问题及解决方法

request和response对象如何解决中文乱码问题?