zoukankan      html  css  js  c++  java
  • 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);//输出结果:?????
    	}
    }
    

      

  • 相关阅读:
    linux ---用uniq实现文件的并集和交集
    vim的.vimrc文件设置
    CURL常用命令
    快速入门系列--MVC--03控制器和IOC应用
    linux下git安装
    openerp child_of操作符深度解析
    apache2 + virtualenv +djangocms
    django-cms安装
    pycharm3.4 下svn 项目checkout&配置
    在django项目外,使用django.db链接数据库(postgres)
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/11908745.html
Copyright © 2011-2022 走看看