字符编码的问题

今天又出现一个字符编码的问题,jvm默认的是用的与本地操作系统有关系,一般是iso-8859-1编码,此对中文是丢失的。
那下面我简单讲下,对于编码的理解。
【导言】
计算机是处理数字与字母的。在创造Unicode之前,有数百种指定这些数位的编码系统,没有一个编码可以包含足够的字元。

有如此所的编码,每个之间还存在冲突,所以就必要要有一个强大的编码系统,能处理所有的字符,一统江湖。那Unicode就出现了。
Unicode就是我们经常讲的 统一码、标准国际码。

简单地讲,Unicode就规定了 字符与 8个16进制之间的关系。并规定,如果最小的字节能表示的话,那就用最小字节。如:字母数字,用两位,汉子用四位。
【其他编码咋回事?】
     我们接触的编码常见的有:
"iso-8859-1""gb2312""gbk""utf-16""utf-8" 
其他的编码就是对Unicode的号码,再进行一个算法的运算如已。
注意 iso-8859-1是对ASCII 码的扩展,不能用来编码汉字
     如: Unicode码为: 49,20,61,6d,20,66f9,9f99,
      String strings =  "I am 曹龙" ;

         char [] chars = strings.toCharArray();
         for  ( char  b : chars) {
            System.out.print(b +  "," );
        }
        System. out .println();
         for  ( char  b : chars) {
            System. out .print(Integer.toHexString(b) +  "," );
        }
        String[] charsets = {  "iso-8859-1" "gb2312" "gbk" "utf-16" "utf-8"  };
         for  (String charset : charsets) {
            System. out .print( "\n"  + charset +  ":" );
             for  ( byte  b : strings.getBytes(charset)) {
                System. out .print(Integer.toHexString(b) +  "," );
            }
        }
输出的结果为:
I, ,a,m, ,曹,龙,
49,20,61,6d,20,66f9,9f99,
iso-8859-1:49,20,61,6d,20,3f,3f,
gb2312:49,20,61,6d,20,ffffffb2,ffffffdc,ffffffc1,fffffffa,
gbk:49,20,61,6d,20,ffffffb2,ffffffdc,ffffffc1,fffffffa,
utf-16:fffffffe,ffffffff,0,49,0,20,0,61,0,6d,0,20,66,fffffff9,ffffff9f,ffffff99,
utf-8:49,20,61,6d,20,ffffffe6,ffffff9b,ffffffb9,ffffffe9,ffffffbe,ffffff99,
【参考资料】


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值