关闭

编码格式

标签: 编码
77人阅读 评论(0) 收藏 举报
分类:

编码

获得编码下的byte值

        String str4 = "中";
        System.out.println(Arrays.toString(str4.getBytes("编码格式")));

1. GBK

● 包含了基本上所有的中国字,前127位是ASCII编码,再127是 西欧字符,然后是中国字、
● 汉字是由大于128两个字节组成的,如“中”字,从-128到127可以看成一个循环,128相当于-128,214就是-42,208就是-28.
● 测试编码

        byte[] bs = {(byte)214,(byte)208};
        String str = new String(bs);
        System.out.println(str);

        byte[] bs3 = {-42,-48};
        String str3 = new String(bs3);
        System.out.println(str3);

2.GBK2312

● 等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要保存呢。于是国人就自主研发,把那些127号之后的奇异符号们直接取消掉。规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的”全角”字符,而原来在127号以下的那些就叫”半角”字符了。

3.UNICODE

● 因为当时各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码。当时的中国人想让电脑显示汉字,就必须装上一个”汉字系统”,专门用来处理汉字的显示、输入的问题,装错了字符系统,显示就会乱了套。这怎么办?就在这时,一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “UNICODE”。

4.UTF-8

● UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。
● 于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比 较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。但是目前的电脑来看,硬盘都是白菜价,电脑性能 也已经足够无视这点性能的消耗了。所以推荐所有的网页使用统一编码:UTF-8。
● 测试编码

    byte[] bs2 = {(byte)228,(byte)184,(byte)173};
    String str2 = new String(bs2,"utf-8");
    System.out.println(str2);

5.UTF-16

● 测试编码

    int a = 0x4E;
    int b = 0x2D;
    byte[] bs1 = {(byte)a,(byte)b};
    String str1 = new String(bs1,"utf-16");
    System.out.println(str1);

6.UTF-16转换成UTF-8规则

如:汉字“中”
UTF-16二进制编码为:
11111110 11111111 01001110 00101101
UTF-8二进制编码为:
11100100 10111000 10101101
转换如下图:
这里写图片描述

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:776次
    • 积分:132
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档