淘宝网unicon,unicode编码

本篇文章给大家谈谈unicon,以及unicode编码的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

文章详情介绍:

通信被全频干扰!火星探测器都失联了吗?究竟发生了什么?

一个惊人的消息在坊间流传,传闻称天问一号、NASA的火星探测器毅力号,还包括在地明面上的祝融号火星车,以及火星轨道上运行的各国多个探测器都已经失联!这是真的吗?并且无线电中传来的还不是一片死寂,而是全频道阻塞式的干扰声,火星上究竟发生了什么大事件,为何探测器都失联了?

火星上究竟发生了什么?为何会出现全频阻塞式干扰?

火星探测器全部失联,似乎这是科幻大片中的设定!比如《火星任务》或者《红色星球》中都有类似的情节,当然现实中的火星并没有那么多奇奇怪怪的火星文明生物来破坏“火星基地”,但这次失联却有些怪异,而且以人类现有的科技手段暂时还无法解决这个问题。

太阳是罪魁祸首!

准确地说,确实是太阳造成了这次大规模的通信中断事件,相信很多朋友都想到了一点,太阳大规模活动了,因此造成了通信中断,从理论上来看,大规模的太阳风暴爆发,真的会对太阳系内的无线电通信造成很大影响,因为大量带电粒子轰击无线电设备,会造成设备过载、死机、重启甚至IC击穿损坏等严重后果。

但也不是太阳风暴影响,而且近期太阳尽管有不少活动,但影响甚小!这次大规模通信中断事件是日凌干扰所致,简单地说就是太阳挡在火星和地球之间,导致信号被强大的太阳这个巨大的无线电干扰源给彻底干扰了!

太阳真的挡住了火星?

其实并没有!笔者用软件模拟了下,这次日凌事件,火星的视角最小时候距离太阳大约还有38’08”,也就是0.7度不到一点,从视角来看太阳并没有把火星彻底挡住。

这里就有两个问题了,这火星怎么就跑到太阳后方去了呢,它不是一直在晚上看到的么,怎么会和太阳叠到一起?

火星属于外行星,它的公转周期为686.971个地球日,而地球的公转周期则在365.24219天左右,因此两者在太阳系中运动的角速度是不相等的,因为都绕着太阳转,一次每隔一定时间就会跑到与地球相对的、太阳的另一边。

这个时间大约是2年左右,这个周期与火星冲日周期是一样的,只是与火星冲日的位置是对拓点。

到底角度要多小才会中断通信?

太阳是一个超级等离子体大球,表面温度大约是5500K,它会发出从电磁波段到X射线波段的全频段辐射,另外它还有一个神奇的日冕层,或者大家也可以叫它太阳的大气层,这里的温度高达百万度,科学家到现在都还没搞清日冕层的加热机制。

但这个比太阳直径要大很多的日冕层发出更加强烈的电磁辐射,因此在航天器视角接近太阳时就会被其强大的杂波干扰,甚至就像全频段阻塞干扰一样,直接将整个无线电波段给淹没了,一般当视角小于2°时通讯就很难保持,丢包率增加,很难再维持常规通信。

此时大家就只能干瞪眼了,包括NASA以及欧空局,还有印度和阿联酋的探测器,都无一幸免,从这一点而言是公平的,大家都没辙。这个时间大约从10月2日19点19分后视角小于2°开始,到10月14日早上7点20左右开始大于2度后结束。

这段时间内几乎是无法通信的,即使能保持也是断断续续的!不过就一般而言,实际中断时间还要长一些,因为日冕层并非是一个固定不变的东西,而是会随着太阳活动而涨落。

通信中断期间,火星探测器都在做些什么?有没有能保持通信的技术?

就一般而言有两种做法,探测车由于地形匹配以及人在回路中控制行进方式,因此在通信中断期间,火星车是不工作的,基本都是停止状态,仅有部分仪器会保持开放,比如记录风速、火星气温以及周围环境数据等,比如2019年火星日凌期间NASA的火星车就保持不动,仅仅保持最基本的数据监测。

至于环绕火星探测的设备,则仍然会继续探测,毕竟它们的轨道比较高,也不需要地球控制中心的导航,在固定的轨道上一圈圈绕行,展开计划中安排的对火星表面探测或者测量火星磁场,太阳风对火星大气层的影响以及火星大气层中的甲烷等科学家感兴趣的数据。

当然火星探测器和地面火星车以及固定的探测点之间的无线电联系并不会中断,其中关键的数据会被保存在探测器存储器内,待通信恢复时再打包发回地球。

真没有技术可以保持日凌期间保持通信吗?

办法是有的,只是代价比较大!相信很多朋友认为在月球上远离地球,应该可以避开日凌干扰,但事实上不行,笔者已经模拟过了,首先是地球与火星之间距离实在是太远了,差不多4亿千米,而地球和月球之间的距离太小,只有38万千米,这点距离差无法改变多少角度,因此即使设置月基通信仍然无法改变现状。

 

火星上看地球与月球的视角

 

唯一的办法是设置中继通信系统,在火星的拉格朗日点上,比如L4点和L5点,设置一个强大的中继转发通信天线,绕过太阳与地球取得联系,但这存在一个比较大的问题是2年用到一次,平时可以直接通信,这个成本是不是太高了?

 

UNICON星座通信概念图

 

也许未来的火星地面基地中会考虑这样的方式,毕竟中断通信大半个月甚至更久,这无人探测设备大不了多等一会,但常驻工作人员的火星基地却完全不能这样,万一遇到个需要地球技术支持且必须马上解决的难题时,中继通信就指望上了!

相信很多朋友都想到了完全不需要“载波”的量子通信,但以现有的技术来看从理论上都无法实现,这个想法还是洗洗睡吧,简直就不太可能!所以未来要绕过日凌进行通信,毫无疑问在L4点或者L5点的中继是最优解决办法!

查询任意汉字的Unicode编码,UTF8编码,GB2312编码,GBK编码

 

在所有IT项目中,汉字字符编码带来的问题是一个不小的工作量,经常导致乱码的发生。

快速查询任意汉字的编码能够更快的定位错误。

糖果云库新增了汉字字符集库,可查询任意汉字的Unicode编码,UTF8编码,GB2312编码,GBK编码,查询方法:

搜索糖果云官网,在糖果云库中查找汉字字符集库,打开即可任意查询,查询界面如下:

查询任意汉字编码

字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。

Unicode也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。UCS有两种格式:UCS-2和UCS-4,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。最常用的是UCS-2,2个字节能容纳65536个编码。UCS-2有两种表示方式:UTF8和UTF16,糖果云查询汉字的Unicode编码即为UTF8,UTF16编码。

 

Unicode编码

以上我们介绍了中文和西欧的字符与编码,但世界上还有很多其他国家的字符,每个国家的各种计算机厂商都对自己常用的字符进行编码,在编码的时候基本忽略了其他国家的字符和编码,甚至忽略了同一国家的其他计算机厂商,这样造成的结果就是,出现了太多的编码,且互相不兼容。
世界上所有的字符能不能统一编码呢?可以,这就是Unicode。

Unicode做了一件事,就是给世界上所有字符都分配了一个唯一的数字编号,这个编号范围从0x000000~0x10FFFF,包括110多万。但大部分常用字符都在0x0000~0xFFFF之间,即65536个数字之内。每个字符都有一个Unicode编号,这个编号一般写成十六进制,在前面加U+。大部分中文的编号范围为U+4E00~U+9FFF,例如,“马”的Unicode是U+9A6C。

简单理解,Unicode主要做了这么一件事,就是给所有字符分配了唯一数字编号。它并没有规定这个编号怎么对应到二进制表示,这是与上面介绍的其他编码不同的,其他编码都既规定了能表示哪些字符,又规定了每个字符对应的二进制是什么,而Unicode本身只规定了每个字符的数字编号是多少。
那编号怎么对应到二进制表示呢?有多种方案,主要有UTF-32、UTF-16和UTF-8。

1.UTF-32
这个最简单,就是字符编号的整数二进制形式,4个字节。
但有个细节,就是字节的排列顺序,如果第一个字节是整数二进制中的最高位,最后一个字节是整数二进制中的最低位,那这种字节序就叫“大端”(Big Endian,BE),否则,就叫“小端”(Little Endian,LE)。对应的编码方式分别是UTF-32BE和UTF-32LE。
可以看出,每个字符都用4个字节表示,非常浪费空间,实际采用的也比较少。

2.UTF-16
UTF-16使用变长字节表示:
1)对于编号在U+0000~U+FFFF的字符(常用字符集),直接用两个字节表示。需要说明的是,U+D800~U+DBFF的编号其实是没有定义的。

2)字符值在U+10000~U+10FFFF的字符(也叫做增补字符集),需要用4个字节表示。前两个字节叫高代理项,范围是U+D800~U+DBFF;后两个字节叫低代理项,范围是U+DC00~U+DFFF。数字编号和这个二进制表示之间有一个转换算法,本书就不介绍了。
区分是两个字节还是4个字节表示一个字符就看前两个字节的编号范围,如果是U+D800~U+DBFF,就是4个字节,否则就是两个字节。
UTF-16也有和UTF-32一样的字节序问题,如果高位存放在前面就叫大端(BE),编码就叫UTF-16BE,否则就叫小端,编码就叫UTF-16LE。
UTF-16常用于系统内部编码,UTF-16比UTF-32节省了很多空间,但是任何一个字符都至少需要两个字节表示,对于美国和西欧国家而言,还是很浪费的。

3.UTF-8
UTF-8使用变长字节表示,每个字符使用的字节个数与其Unicode编号的大小有关,编号小的使用的字节就少,编号大的使用的字节就多,使用的字节个数为1~4不等。
具体来说,各个Unicode编号范围对应的二进制格式如表2-6所示。
表2-6 UTF-8编码的编号范围与对应的二进制格式

表2-6中的x表示可以用的二进制位,而每个字节开头的1或0是固定的。
小于128的,编码与ASCII码一样,最高位为0。其他编号的第一个字节有特殊含义,最高位有几个连续的1就表示用几个字节表示,而其他字节都以10开头。
对于一个Unicode编号,具体怎么编码呢?首先将其看作整数,转化为二进制形式(去掉高位的0),然后将二进制位从右向左依次填入对应的二进制格式x中,填完后,如果对应的二进制格式还有没填的x,则设为0。

我们来看个例子,“马”的Unicode编号是0x9A6C,整数编号是39532,其对应的UTF-8二进制格式是:
1110xxxx 10xxxxxx 10xxxxxx
整数编号39532的二进制格式是:
1001 101001 101100
将这个二进制位从右到左依次填入二进制格式中,结果就是其UTF-8编码:
11101001 10101001 10101100
十六进制表示为0xE9A9AC。
和UTF-32/UTF-16不同,UTF-8是兼容ASCII的,对大部分中文而言,一个中文字符需要用三个字节表示。

4.Unicode编码小结
Unicode给世界上所有字符都规定了一个统一的编号,编号范围达到110多万,但大部分字符都在65536以内。Unicode本身没有规定怎么把这个编号对应到二进制形式。
UTF-32/UTF-16/UTF-8都在做一件事,就是把Unicode编号对应到二进制形式,其对应方法不同而已。UTF-32使用4个字节,UTF-16大部分是两个字节,少部分是4个字节,它们都不兼容ASCII编码,都有字节顺序的问题。UTF-8使用1~4个字节表示,兼容ASCII编码,英文字符使用1个字节,中文字符大多用3个字节。

想要了解更多Java基础知识,可以点击评论区链接和小编一起学习java吧,此视频教程为初学者而著,零基础入门篇!给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili