清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.72

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

开通会员送SVIPApp Inventor 2 拓展有奖征文 VIP会员享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 761|回复: 0
打印 上一主题 下一主题

Unicode and UTF-8

  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    跳转到指定楼层
    楼主
    发表于 2015-11-23 12:24:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    Unicode预订的编码空间大小为0x0-0x10FFFF,最多可以容纳1114112(100多万)个字符,实际上并不能使用这么多的空间,于是编码方式出现了两种:ucs-2(BMP)和ucs-4 编码方式,其中,bmp是Basic Multilingual Plane的简写。

    一个字符的Unicode编码(码点)是唯一确定的,但由于不同系统平台实现方式的不同(如字节序的不同),或基于传输或节省存储空间等各种因素考虑,Unicode的实现方式各不相同,Unicode的实现方式称为Unicode转换格式(Unicode Translation Format,简称为UTF)如UTF-16。
    UTF-16采用双字节对UCS-2字符进行编码,由于UCS-2本身也是双字节编码,故一般UTF-16编码和UCS-2编码可等同对待,但由于不同平台对字节序的理解不同,UTF-16又分为UTF-16 BE(Big-Endian, 简写为UTF-16 BE)和UTF-16 LE(Little-Endian,简写为UTF-16 LE)两种编码方式。

    UTF-16编码的优点:编码效率高,寻址快。
    由于所有字符都采用双字节编码,可以快速对字符进行定位及计算,如一个文本文件,可以通过获得其文件大小/2即可计算得知包含的字符数。Java默认使用UTF-16 BE编码。
    那么为什么会出现utf-8呢:
    1)、和ASCII码不兼容,而且不太好移植(Not Portable)
    例如:char *s=“Good ,北京”;该C语言代码采用UTF-16编码后,字节序列中间有许多’\0’,’\0’ 会被识别为字符串的终止,strlen()函数不起用了。
    2)、存储空间较大,造成存储及带宽的极大浪费,极端情况下,英文存储空间会Double!
    为了解决这些现实生活中遇到的问题,UTF-8编码应运而生!

    言归正传,对于UTF-8:
    UTF-8是针对Unicode(UCS-2或UCS-4)的可变长度编码方式,是一种前缀码,它可用来编码Unicode中的任何一个字符。UTF-8编码和ASCII码全兼容,自应用以来逐渐成为电子邮件、网页及其他存储或传送文字应用中,最优先采用的Unicode编码方式。

    转自:火丁笔记
    清泛网 - 专注IT技能提升
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2024 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2024-11-22 11:26 , Processed in 0.017641 second(s), 31 queries .