字符编码

GBK:Windows系统默认的字符集,含2万多汉字

GB2312:仅含0.67万汉字,

ISO-8859-1:国际通用,兼容多国的语言编码。

以上三者的区别参考:  http://www.cnblogs.com/x_wukong/p/3675832.html

 

UTF-8:国际通用,二进制(一个中文=2个字节)

UNICode:Java采用的编码,十六进制(一个中文=3个字节)

以上两者的区别详细参考:  https://www.zhihu.com/question/23374078

UNICode的出现,是为了解决因各国都有一套自己的编码标准而导致的互不兼容的问题(这个时候貌似互联网还没出现,兼容问题主要体现在要使用某一软件,必须下载与该软件使用的编码相同的系统,所以可以认为UNICode解决了本地兼容问题)。

后来互联网出现,为了解决UNICode如何在网络中传输的问题,UTF系列编码标准就出现了,UTF——USC Transfer Format(面向传输),这是为传输而设计的编码,其中UTF-8是目前使用最广泛的UNICode的一种实现方式。

String encodeValue = o.toString();
try {
    encodeValue = new String(encodeValue.getBytes("gb2312"), "iso-8859-1");
    if (encodeValue.length() > length) {
        return false;
    }
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    return false;
}
//1. encodeValue.getBytes("gb2312"), 将encodeValue按照gb2312取出
//2. new String(... , "iso-8859-1"), 将取出的gb2312转化为iso-8859-1编码的
public static void gbk_test() {
    try {
        String sss = "里".toString();
        sop("gbk编码下,一个汉字的长度" + sss.length()); // 1个字节
        String encodeValue = new String("里".getBytes(), "gb2312");
        sop("gb2312编码下,一个汉字的长度" + encodeValue.length()); // 2个字节
        encodeValue = new String(encodeValue.getBytes("gb2312"), "iso-8859-1");
        sop("iso-8859-1编码下,一个汉字的长度" + encodeValue.length()); // 2个字节
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
        return;
    }
}

 str.getBytes() 和 Integer.toBinaryString(str)的区别:

String para1 = new String("English英文");
byte[] result1 = para1.getBytes();
int para2 = 4;
String result2 = Integer.toBinaryString(para2);
for (byte b : result1)
    System.out.print(b + " ");
sop("");
sop(result2);

 输出结果:

 69 110 103 108 105 115 104 -24 -117 -79 -26 -106 -121
 100

 
 

getBytes():只能被String调用,返回 Byte 型数组 。(byte数组的每一项都是字符串中每一个字符在相应编码字符集中的序号,亦即编码)

toBinaryString:参数只能是 int 型的,返回 String 。(输出结果是参数的二进制表示)

转载于:https://www.cnblogs.com/zhengmengen/p/7444049.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值