弄清这2点,你就懂了字符编码(ASCII、非ASCII、UTF-8 的身世之谜)

       今天查阅一些编码相关的资料,看后有了一定的理解,整理了一下思路发上来,如有错误的地方,望指正。

1、什么是字符编码
    
    1.1 字符编码涉及到的名词
    
        (1)抽象字符集(Abstract character repertoire)
             这个集合包含了当前系统支持的所有字符,比如“李”、“A”、“¥”等字符。只包含字符,不包含其他东西,如字体/大小等。
        
        (2)编码字符集(Coded Character Set)
            将[抽象字符集]中的每一个字符映射到一个坐标或者一个正整数上,这个映射的值称为码位(code point)。[抽象字符集]+[位码] = [编码字符集]。Unicode就是一个[编码字符集]。每个字符都有自己唯一的码位(类似人的身份证号),通过码位就可以找到对应的字符。
            

        (3)字符编码方式(Character Encoding Form)
              [编码字符集]与实际储存数值之间的转换方式(格式)。将[编码字符集]的码位转换成有限bit长度的整形值([码元]code units)的序列。
            
        (4)字符编码方案(Character Encoding Scheme)
            将[码元]映射到8位字节序列,以便编码后的数据文件储存或网络传输。例:见2.UFT-8编码。
    
    1.2 为什么会有这么多[抽象字符集]

         诞生顺序:ASCII --> 非ASCII --> Unicode  --> UTF-8

        (1) ASCII (American Standard Code for Information Interchange)
              计算机刚出现时设计的编码,只包含英文字符。
        
        (2) 非ASCII
              随着计算机的普及,计算机必须要支持其他国家的语言,但ASCII只支持英文字符,所以只能新增其他的字符集,如汉字的GB2312、BIG5。    
        
        (3) Unicode
          每个国家都有自己的字符集易导致混乱不统一,比如A文件在B国家是正常的,但是到C国家就显示乱码。所以就出现了Unicode,称为统一码、万国码,它包含了所有的字符,它为每种语言的每个字符都定了统一的、唯一的二进制编号,用以满足跨语言,跨平台的需求。
        
        (4) UTF-8 (Unicode Transformation Format 8-bit)
              a、由于Unicode字符集太大,里面很多字符在某些国家基本不会用到,且Unicode储存字符时需要至少2个字节以上的空间,很浪费资源。如A字符在ASCII中只占1个字节,但在ASCII最少占2个字节。所以就出现了UTF-8,UTF-8是Unicode的一种实现方式(UTF-8全称 在UTF-8编码中原本只需要一个字节的ASCII字符,仍然只占一个字节,而复杂字符就需要2个到6个字节来存储。

              b、由于Unicode只规定了编码方式,未规定解码方式。如有一串2字节的二进制,是以1个字节为1个字符的方式解码还是2个字节为1个字符的方式。出现UTF-8编码后就可以用UTF-8的方式来解析这串二进制(例子:见 2、UFT-8编码)。
                     Unicode[编码]流程:Unicode(字符集-->对应的编号)-->二进制数储存。                   //Unicode已做到
                     Unicode[解码]流程:解码显示<--Unicode(字符集<--对应的编号)<--二进制数储存  //以何种方式来[解码显示]?Unicode未规定,所以就出现了UTF-8
                     UTF-8解码:二进制数储存-->Unicode(对应的编号-->字符集)-->用UFT-8的编码方式来解码显示当前字符。    //同一个Unicode编号在不同编码(UTF-8/GB2312)的解码下获取到字符会不一样。

    
2、UFT-8编码

        (1) 单字节的字符。[首字节]的第1位(bit)设为0,随后的7位是这个字符的Unicode码。如:0xxxxxxx
        (2) N(N > 1)字节的字符。[首字节]:前N位都设为1,第N+1位设为0,其余的位为这个字符的Unicode码;
                                [非首字节]:前2位设为10,其余的位为这个字符的Unicode码;
            如:0xxxxxxx                                                    1字节的字符UFT-8二进制格式
                    110xxxxx 10xxxxxx                                    2字节的字符UFT-8二进制格式
                    1110xxxx 10xxxxxx 10xxxxxx                    3字节的字符UFT-8二进制格式
                    11110xxx 10xxxxxx 10xxxxxx 10xxxxxx    4字节的字符UFT-8二进制格式
                                
                 记忆点:首字节的首位以0开头说明当前是单字节字符。首字节连续为1的位有几个,则当前字符就由几个字节组成。
            
            例子1:
            --------------------------------------------------------------------------------------------
             字符       UFT-8编码的二进制                   |    UFT-8编码的十六进制 
            --------------------------------------------------------------------------------------------
              李      11100110 10011101 10001110    |        E69D8E          
            --------------------------------------------------------------------------------------------
        
           例子2:
            手动将Unicode编码转换为UFT-8编码。以"严"字为例。
            ------------------------------------------------------------------------------------------------------------------
             Unicode编码(十六进制)      |        UTF-8编码(二进制)                           |     [码位]位数
            ------------------------------------------------------------------------------------------------------------------
             00000000-0000007F          | 0xxxxxxx                                                     |          7
             00000080-000007FF          | 110xxxxx 10xxxxxx                                    |         11
             00000800-0000FFFF          | 1110xxxx 10xxxxxx 10xxxxxx                    |        16
             00010000-0010FFFF          | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx    |         21
            ------------------------------------------------------------------------------------------------------------------
            
            步骤:  -->(1) 先获取Unicode字符的十六进制("严"的Unicode码是4E25)

                          -->(2) 根据十六进制的值判断所处的范围(4E25处在0000 0800-0000 FFFF范围内,对应右边UTF-8编码的范围则                                        是 1110xxxx 10xxxxxx 10xxxxxx)

                          -->(3) 获取Unicode字符的二进制(4E25的二进制是:100111000100101) --> 把该二进制的值从右到左依次填入                                         1110xxxx 10xxxxxx 10xxxxxx 的x中,不足的位补0

                          -->(4) 结果:
                                     "严"的Unicode二进制:       100   111000   100101
                                     "严"在UFT-8的范围:  1110xxxx 10xxxxxx 10xxxxxx
                                      补齐结果:                  11100100 10111000 10100101    转换十六进制-->E4B8A5
            
                     可以看到,“严”在Unicode中和UFT-8中的编码(编号)是不一样的。Unicode中是4E25,UFT-8中是E4B8A5。

<think>好的,用户想要弄清楚Sentinel-2的相关信息,梳理学习内容,并提交一份Word文档。首先,我需要明确用户的需求。他们可能需要学术研究、项目报告或者课程作业的帮助。接下来,我应该考虑用户可能需要的具体信息,比如卫星的基本参数、应用领域、数据处理方法等。 用户提到“梳理学习”,这可能意味着他们需要系统化的结构,方便整理成文档。所以,我应该按照逻辑顺序组织信息,分章节来呈现。另外,用户可能对如何获取数据、处理数据的具体步骤感兴趣,特别是如果他们打算实际操作的话。 需要注意Sentinel-2的不同波段及其用途,这是该卫星的重要特。此外,用户可能不了解如何访问下载数据,所以需要提供数据源的链接简要说明。数据处理部分可能需要推荐一些常用软件,比如SNAP或QGIS,这对新手比较友好。 用户可能没有明确说明文档的具体格式要求,但按照学术标准,应包括引言、技术参数、应用案例等部分。同时,是否需要图片或图表?虽然用户没提,但建议添加示意图或波段表会更清晰。 另外,要确保所有技术术语都有解释,比如多光谱成像、空间分辨率等,以帮助理解。可能用户对这些概念还不熟悉。需要避免过于专业的术语,或者在使用时给出简单定义。 最后,用户可能需要引用来源,所以提供ESA的官方网站数据处理工具的链接是必要的,确保信息的准确性可查性。检查是否有最新的数据,比如Sentinel-2的发射时间、卫星状态是否更新,保持信息的时效性。 总结来说,回答需要结构清晰,分详细,涵盖卫星概述、技术参数、应用、数据处理步骤以及资源链接,方便用户整理成Word文档。同时,语言要简洁明了,适合不同知识背景的读者理解。</think>以下是为您梳理的Sentinel-2卫星系统学习框架及文档编写建议,可按此结构整理成Word文档: # Sentinel-2卫星系统技术报告 ## 一、卫星系统概述 1. **任务背景** $$ \text{欧洲航天局(ESA)哥白尼计划环境监测项目} $$ 全球首颗高分辨率多光谱成像卫星(2015年首发) 2. **双星组网特性** - Sentinel-2A(2015.6发射) - Sentinel-2B(2017.3发射) - 重访周期:单星10天,双星组合5天 ## 二、核心技术参数 1. **成像波段配置** | 波段号 | 中心波长(nm) | 空间分辨率(m) | 主要用途 | |--------|----------------|------------------|------------------| | B1 | 443 | 60 | 气溶胶监测 | | B2 | 490 | 10 | 水体穿透 | | ... | ... | ... | ... | > 共13个波段(可见光-短波红外) 2. **关键性能指标** - 幅宽:$ 290\ \text{km} $ - 量化等级:$ 12\ \text{bit} $ - 数据速率:$ 0.5-1.5\ \text{Gbps} $ ## 三、典型应用场景 1. **农业监测** $$ \text{NDVI} = \frac{B8 - B4}{B8 + B4} $$ 通过红边波段(B5-B7)实现作物长势分析 2. **环境监测** - 水体叶绿素浓度反演 - 森林覆盖变化检测 - 城市热岛效应研究 ## 四、数据处理流程 1. **数据获取途径** - ESA官方数据门户:[Copernicus Open Access Hub](https://scihub.copernicus.eu/) - AWS云平台免费数据集 2. **预处理步骤** ```mermaid graph TD A[L1C级数据] --> B[辐射定标] B --> C[大气校正] C --> D[几何校正] D --> E[L2A级数据] ``` ## 五、学习资源推荐 1. **官方文档** - 《Sentinel-2 User Handbook》(最新版) - ESA技术报告:MSI(MultiSpectral Instrument)技术白皮书 2. **处理工具** - SNAP软件:专用Sentinel工具箱 - QGIS插件:半自动分类模块 --- **文档编写建议**: 1. 插入卫星轨道示意图(可截取ESA官网示意图) 2. 添加波段响应曲线图 3. 附典型应用案例(如某区域土地利用分类图) 4. 设置页眉/页脚标注数据来源 5. 建议使用1.5倍行距,中文字体建议使用宋体小四 注:所有技术参数请以ESA官网最新数据为准,建议访问[Sentinel-2任务官网](https://sentinel.esa.int/web/sentinel/missions/sentinel-2)核实更新。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值