字节、字符、ASCII码、UTF-8编码

字节、字符、ASCII码、UTF-8编码


介绍

计算机只能识别01二进制数字,为了使计算机能够读懂我们人类自然语言,美国科学家就定义了ASCII码值,比如用二进制01100001(97)表示英文字符’a’。由于英文字符比较少,用一个字节(3bit可以表示128种情况)就可以表示了,但是其它国家的文字字符可能有成百上千所以使用一个字节是无法表示的,因为为了都能表示全世界各国的文字,采用UTF-8的3个字节来表示一个字符。每一种字符集编码都有自己的一张码表。

程序案例

中文汉字utf-8占三个字节演示

    //中文汉字的utf-8一个字符占三个字节
    String englishString = "hello";
    byte[] bytes1 = englishString.getBytes("utf-8");
    System.out.println(bytes1.length);// 字节数组长度为5

    String chineseString = "你好";
    byte[] bytes2 = chineseString.getBytes("utf-8");
    System.out.println(bytes2.length);// 字节数组长度为6

英文字符字节就是对应的ASCII码值

    String englishString = "hello";
    byte[] bytes1 = englishString.getBytes("utf-8");
    for (int i = 0; i < bytes1.length; i++) {
        System.out.println(bytes1[i]);
    }
    //104、101、108、108、111(分别对应hello每个字符对应的ASCII码值)

备注:网络传输传输的其实就是字节流(字节数组),先指定编码格式,然后类似ASCII码那样寻找对应的字符进行解码。


参考

http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
http://tgideas.qq.com/webplat/info/news_version3/804/808/811/m579/201307/218730.shtml
https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值