Unicode 与 UTF-8 UTF-16 UTF-32

本文深入探讨了Unicode编码标准,包括其历史发展、16位字符编码的限制以及扩展后的17个平面。详细介绍了UTF-8、UTF-16、UTF-32三种编码方案,及其如何将Unicode字符转换为程序数据,适用于不同的应用场景。

Unicode 与 UTF8 UTF16 UTF32

什么是Unicode

  • 定义:
    Java支持Unicode码,Unicode码是由Unicode协会建立的一种编码方案,它支持使用世界各种语言所书写的文本的交换、处理、和显示。
  • 基本数据类型char试图通过提供一种能够存放任何字符的简单数据类型来利用这个设计。
  • 起初:16位的字符编码 只能产生65536个字符
  • 发展:目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面
  • 若现只考虑16位Unicode字符。存储在char型变量中。
    一个16位Unicode码占两个字节,用\u开头的4位十六进制数表示,范围从’\u0000’ 到 ‘\uFFFF’。
    **e.g.**如下两条语句 都是 将字符A赋值给 char 型变量letter:
    char letter = 'A';
    char letter = '\u0041';  // Character A's Unicode is 0041
    

UTF-8 UTF-16 UTF-32

UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。

  • UTF-8以字节为单位对Unicode进行编码。UTF-8的特点是对不同范围的字符使用不同长度的编码。
  • UTF-16编码以16位无符号整数为单位。
  • UTF-32编码以32位无符号整数为单位。Unicode的UTF-32编码就是其对应的32位无符号整数。

联系

  • 在Unicode中,我们有很多方式将数字23383表示成程序中的数据,包括:UTF-8、UTF-16、UTF-32。UTF是“Unicode Transformation Format”的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。
  • e.g. “汉字”对应的数字是0x6c49和0x5b57,而编码的程序数据是:
    char      data_utf8[]={0xE6,0xB1,0x89,0xE5,0xAD,0x97};//UTF-8编码
    char16_t data_utf16[]={0x6C49,0x5B57};        //UTF-16编码
    char32_t data_utf32[]={0x00006C49,0x00005B57};//UTF-32编码
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值