UTF-8和Unicode

导读:本篇文章讲解 UTF-8和Unicode,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

UTF:Unicode Transformation Format
UTF-8是在网络上传输Unicode的一个转换标准,发送时将字符串Unicode转为UTF-8,接收时将字节转为Unicode,就完成来字符串的传输

Unicode与网络传输

Unicode

点击此链接进入Unicode查询网站
示例:

public class UnicodeDemo01 {

    public static void main(String[] args) {
        /**
         * Unicode编码
         * java 字符存储的是一个符号的Unicode编码
         * 可以显示为10进制或16进制的形式
         * java 的字符范围是0~65534
         *
         */
        char c1 = 'a';
        char c2 = '好';
        char c3 = 'Ô';//U+00D4  Ô
        char c4 = '¾';//U+00BE  ¾

        System.out.println((int)c1);
        System.out.println((int)c2);
        System.out.println((int)c3);
        System.out.println((int)c4);
    }
}

网络传输

  • 无论是TCP还是UDP协议,它们都以byte作为数据传输单元
  • 任何需要传输的数据都必须拆分为byte进行传输
  • 每个byte是0~255之间的数字
    在这里插入图片描述

使用UTF-8传输数字时把汉字使用三字节模板来进行传输

UTF-8 到底是什么意思?unicode编码简介

在使用UTF-8转换传输Unicode时要先进行UTF-8进行编码传输,接收时进行UTF-8解码就可以传输数据了。

public class Utf8Demo {
    public static void main(String[] args) {
        /**
         * 测试UTF-8编码API
         */
        String str = "Java β 表达式";
        //将字符串中的文字进行UTF-8编码
        ///str.getBytes(StandardCharsets.UTF_8) 也可以写成 str.getBytes("UTF-8”)
        // 经过qetButes方法的转换得到了 UTF-8 编码的字节数组
        byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
        //bytes就可以利用网络进行传输

        //将字节数组中的UTF-8编码的字符进行解码
        //new String(bytes, "UTF-8");
        String s= new String(bytes, StandardCharsets.UTF_8);
        System.out.println(s);

        /*
         * 输出字符串中每个字符的Unicode
         */
        System.out.println("Unicode....");
        for (int i=0; i<str.length(); i++){
            char c = str.charAt(i);
            System.out.print(c);
            System.out.print(":");
            System.out.println(Integer.toBinaryString(c));//输出每个字符的二进制编码
        }

        System.out.println("UTF-8....");
        for (byte b:bytes){
            System.out.println(Integer.toBinaryString(b & 0xff));///这里用一个与运算,用于去除高位上的1,(可以不写&0xff看看输出结果)
        }
    }
}

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/91090.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!