整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

国外断崖发现中国汉字,将内容翻译过来后,专家留下了激

国外断崖发现中国汉字,将内容翻译过来后,专家留下了激动的眼泪

外断崖发现中国汉字,将内容翻译过来后,专家留下了激动的眼泪

这是一篇令人振奋的文章,讲述了在外蒙古的一处断崖上发现了中国古代的石刻文字,这些文字经考古学家鉴定后,竟然是东汉时期的一块重要史料《封燕然山铭》。这一发现不仅证明了在东汉时期,中国已经开始在蒙古地区留下自己的足迹,而且还为人类了解那个时代的历史提供了珍贵的资料。

当地牧民偶然发现这些神秘的古文字,并上报给了研究人员,经过中蒙两国专家的联合考察和研究,最终成功解读了这些文字的内容。原来,这是一块记述东汉车骑将军窦宪率军北征,击溃匈奴冒顿部落的英勇战绩的石刻。这一发现让人震撼不已,宛如时光倒流,让专家仿佛亲历当年的战争场景,对这一峥嵘岁月留下了深深的敬意。

值得一提的是,虽然《封燕然山铭》这一重要史料千百年来一直无法寻获,但如今被意外发现,更加彰显了它的珍贵价值。这也启示我们,历史资料的珍稀,往往源于人类对历史的渴望和努力。只有不断勘探和发掘,才能让历史的真相浮现于世。

从这一发现中,我们不仅感受到了历史的神奇魅力,也看到了民族团结的重要意义。蒙古和中国两国专家携手合作,共同解开了这一历史之谜,无疑展现了两国人民世代友好、携手共进的深厚情谊。正是在这样的友好基础之上,才有可能挖掘出如此珍贵的历史遗产,让我们对过往的历史有了更全面的认知。

总的来说,这次在外蒙古断崖上发现中国古代石刻的事件,不仅为我们打开了了解东汉时期历史的一扇窗户,也见证了中蒙两国人民携手探寻历史奥秘的感人故事。这无疑是一件让人为之兴奋的大事,它不仅丰富了我们对那个时代的认知,也昭示了中蒙两国人民将永远携手并进,共创美好未来的坚定决心。

<HTML>

<style>

body {

font-family: Arial, sans-serif;

margin: 20px;

}

h1 {

text-align: center;

color: 333;

}

p {

line-height: 1.5;

color: 555;

}

blockquote {

font-style: italic;

color: 777;

border-left: 5px solid ccc;

padding-left: 20px;

margin-left: 0;

}

</style>

<body>

<h1>历史的奇迹:外蒙古断崖发现中国汉字</h1>

<p>在遥远的蒙古大地上,一处断崖壁上竟然出现了中国古代的汉字石刻,这无疑令人大为震惊。这件发现不仅为我们提供了珍贵的历史资料,也见证了两国人民携手探寻历史奥秘的动人故事。这一事件让我们领略到了历史的神奇魅力,也让我们感受到了中蒙两国人民深厚的友谊。</p>

<p>1990年的一个偶然日子,两位蒙古牧民在山脚下躲避暴雨,抬头望去,竟发现了断崖壁上刻有神秘的文字。经过蒙古和中国专家的共同考察和研究,这些文字终于被确认为东汉时期的《封燕然山铭》。这是一块记载了当时车骑将军窦宪北征匈奴、取得大胜的重要史料。专家们在解读这些文字时,无不为之激动万分,仿佛亲眼目睹了当年那段峥嵘岁月。</p>

<blockquote>"一时间,不少专家阅读完石刻内容后,激动的控制不住情绪,当场泪崩。此战之后,北匈奴远离漠北,往西而去。"</blockquote>

<p>这次发现不仅为我们提供了珍贵的历史资料,也展现了中蒙两国人民的深厚友谊。经过数年的商谈,两国专家终于联手解开了这一历史之谜。这无疑彰显了两国人民携手探寻历史真相的坚定决心,也昭示了中蒙两国将永远友好相处、共创美好未来的坚定信念。</p>

<p>历史资料的发现往往来之不易,但正是这种不懈的探索精神,才让我们得以窥见过往的真相。这次在蒙古断崖上发现的中国古汉字石刻,无疑为我们打开了了解东汉历史的一扇窗户,让我们对那个时代有了更加立体和全面的认知。让我们为这一历史性的发现而激动不已,并相信,只要我们与邻里国家携手合作,定能在探寻历史奥秘的道路上取得更多令人振奋的成果。</p>

</body>

</HTML>

了解您的要求。我将继续以生动有趣的方式,结合前文内容,为您补充后续的内容。

这次在外蒙古发现的《封燕然山铭》石刻,不仅为我们揭开了东汉时期历史的神秘面纱,也让人感受到了两国人民深厚的友谊。此后,这件考古发现引起了各界的广泛关注。

专家们对这块石刻进行了细致入微的研究和解析,不仅成功还原了其中的文字内容,更从中探究出了当时的历史细节。据记载,这块石刻高达0.94米,宽1.3米,刻有260余字,生动地描述了东汉车骑将军窦宪率军北伐,大败冒顿部落的壮举。这无疑为我们重塑了那一段峥嵘岁月提供了宝贵依据。

令人赞叹的是,即使经过千百年的风雨洗礼,这块石刻依然保存完好,字迹清晰,这也充分说明了古人对文字的珍视。他们将这些重要的历史记录刻于坚硬的石头之上,足见当时人们对历史传承的重视程度。我们由此更加感恩前人留下的这些宝贵文化遗产,它们成为我们了解过往的重要窗口。

当两国专家共同研究破译这些古老文字时,无不为之动容。他们仿佛穿越时空,亲临当年的战场,感受到了那份英雄壮烈的气概。这次发现无疑是对历史学者的一种嘉许,让他们对这段历史有了更立体、更深入的认知。同时,这件考古成果也进一步增进了中蒙两国人民的友谊,激发了大家探索历史、了解过去的热情。

我们相信,仅凭这一次发现,还无法完全阐释当时历史的全貌。但我们有理由相信,只要两国人民携手合作,充分利用各自的资源和专长,定能在日后的探索中,不断发现更多珍贵的历史遗产,为人类文明的发展做出应有贡献。让我们一起期待,在未来的考古路上,会有更多令人惊喜和兴奋的发现,让我们对人类历史有更加深入全面的认知。


网站是使用HTML等制作的用于展示特定内容相关的网页集合
网页是网站中的一“页”,通常是HTML格式的文件,需要通过浏览器来阅读。
网页是构成网站的基本元素,它通常由图片、连接、文字、声音、视频等元素组分。一般以.htm或.HTML为后缀名的文件,都是HTML文件。
什么是html
html是超文本标记语言,它是用来描述网页的一种语言。
1、可以加入图片、声音、动画、多媒体文件等内容。
2、还可以从一盒文件跳转到另一个文件,与世界各地主机的文件连接。
网页是由网页元素组成,这些元素是利用html标签描述出来的,通过浏览器显示给用户。
静/动态区别:
静态:
XX.htm、xx. Html
区分方式:网页中数据的提取来源方式
动态:
Xx.jsp、xx.php、xx.asp、xx.cgi
页面中的数据可以通过和数据库等其他来源提取
动静态交互使用

Html语句的语法的基本单位:

标签、标记

tag<标签单词><标签单词 属性名1=”属性值” 属性名1=”属性值”>

多数标签成对使用,相对少数标签非成对(独立)使用<img>独立使用

<a> ... </a> 制作超级链接

1. 创建文本文件

2. 书写html代码(标签)

3. 保存文件

4. 文件名后缀改为.Html或.html

5. 浏览器打开以上网页文件

标签不能书写中文,只能是英文

代码中“空格”为缩进

嵌套

<html>

<head> </head>

<body> </body>

</html>

<font></font>修饰文字

字形face Font size=“1--7”字体大小 color颜色

<em></em>强调,斜体字

<p>段落文字</p>

<img src=”图片文件名”alt=”xxxxx”width=”像素宽度”height=”像素高度”>

绝对路径:”file:///D:/html/11.jpg”

相对路径:”../src/1.html/11.jpg”

<a>超链接</a>

页间跳转

<a href=”http://www.baidu.com”>文字、图片</a>

<a href=”../src/1.html”>文字、图片</a>

页内跳转(标签需要成对出现)href=作为起点name=作为结尾需要去到的地方

<a Href=”#变量名”>....</a>

..................

<a name=”变量名”>xxx</a>

<a href=”..../#t1”

两者结合使用<a href=”http://www.baidu.com/news/#变量名”>

...............

<a name=”变量名”></a>

“弹幕”滚动标签

标签在不同浏览器当中打开时的内容是不一样的

可用GRB单词进行颜色查找

独立使用标签:<img>< hr>< br换行>在需要换行的地方输入即可

空格在html中作为特殊符号使用:作为分隔符“ ”

Html中汉字不作为标签符

<;&abc>;作为括号使用

字符集不同会出现乱码

Align水平对齐属性;left、right、center

注释 屏蔽代码

Dos批处理 在注释前加上“rem”

Html <!-- 注释的内容...... - ->

扩展<META>元数据标签

标签名称、独立使用、主要作用

放在<head></head>中执行 部分功能在浏览器打开时就开始工作

Charset 字符集

Set 赋值

Set 集合

Th 保存表格数据的单位,等同于<td>。但自带居中加粗显示

Td、th单元格合并:

同行左右单元格合并colspan=”n”

同列上下单元格合并rowspan=”n”

JavaScript中,所有的string类型(或者被称为DOMString)都是使用UTF-16编码的。

MDN

DOMString 是一个UTF-16字符串。由于JavaScript已经使用了这样的字符串,所以DOMString 直接映射到 一个String。

将 null传递给接受DOMString的方法或参数时通常会把其stringifies为“null”。

引出的Unicode中UTF-8与UTF-16编码的详细了解

Unicode编码

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

通常Unicode编码是通过2 Byte来表示一个字符的,如U+A12B,2 Byte的二进制表示方法结果就是1010(A)0001(1) 0010(2)1011(B)。

需要注意的是:UTF是Unicode TransferFormat的缩写,UTF-8和UTF-16都是把Unicode码转换成程序数据的一种编码方式。

UTF-8

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多4个字节)。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

UTF-8的来历

UTF-8的规范里充斥着这样神秘的句子:“第一个位元组由110开始,接着的位元组由10开始”,“第一个位元组由1110开始,接着的位元组由10开始”。

那么这到底是什么意思呢?为什么要这么做呢?

我们先从二进制说起。我们都知道,一个字节是由8个二进制位构成的,最小就是0000 0000,最大就是1111 1111。那么一个字节所能表示的最多字符数就是2的8次方,也就是256。对于26个英文字母来说,大小写全算上就是52个,再加上10个阿拉伯数字,62个字符,用可以表达256个不同字符的一个字节来存储是足够了。

但是,我们中国的常用汉字就有3000多个,用一个只能表达256个字符的字节显然是不够存储的。至少也需要有2个字节,1个字节是8个二进制位,2个字节就是16个二进制位,最多可以表达2的16次方,也就是256*256=65536。65536个字符足够容纳所有中国的汉字,外带日语、韩语、阿拉伯语、稀其古怪语等等各种各样的字符。所以这样就产生了Unicode,因为它用2字节表示字符,所以更严格来讲应该叫UCS-2,后来因为怪字符太多,2字节都不够用了,所以又搞出来了一个4字节表示的方法,称作UCS-4。不过现在对绝大多数人来讲UCS-2已经是足够了。

Unicode本来是一个好东西,用2字节表示65536种字符,全人类皆大欢喜的事情。但是偏偏有一帮子西洋人,非要认为这个东西是一种浪费,说我们英文就最多只需要26个字母就够了,1个字节就够了,为什么要浪费2字节呢?比如说字母A就是0100 0001,这一个字节就够了的东西,你弄2字节,非要在前面加8个0,0000 0000 0100 0001,这不是浪费吗?我们就偏要用1字节表示英文。

好吧,我们全人类只好做妥协,规定每个字节,只要看见0打头的,就知道这是英文字母,这肯定不是汉字,只有看见1开头的,才认为这是汉字。

但是我们汉字用1个字节表示不下,那好办,用2个1开头的字符表示1个汉字。这样本来16个二进制位,减去2个开头的1,只剩下14个二进制位了,2的14次方就是16384个字符,对于中文来讲,也是足够用了。但是无奈他们还是想表达65536种字符,那怎么办呢?就需要3个字节才能容纳得下了,于是UTF-8粉墨登场。

首先,首位为0的字符被占了,只要遇到0开头的字符,就知道这是一个1字节的字符,不必再往后数了,直接拿来用就可以,最多表示128种字符,从0000 0000到0111 1111,也就是从0到127。

接下来的事情就比较蹊跷了。我们怎么用1开头的字符既表示2字节,又表示3字节呢?假设我们只判断首位的1,这显然是不行的,没有办法区分,所以我们可以用10或者11开头的字符来表示2字节,但是3字节又该以什么开头?或者可以用10开头表示2字节,用11开头表示3字节?那么4字节的字符将来又该怎么办?也许我们可以用110开头表示3字节,用111开头表示4字节?那么5字节6字节呢?似乎我们看到了一个规律:前面的1越多,代表字节数越多。

这时候,看一下我们的第一种方案:用10开头表示2字节,那么我们的一个字符将是

10xx xxxx 10xx xxxx

用110表示3字节,那么一个3字节的字符将是:

110x xxxx 110x xxxx 110x xxxx

这样无疑是能区分得开的。但是4字节怎么办?

1110 xxxx 1110 xxxx 1110 xxxx 1110 xxxx

吗?这样也能区分开,但似乎有点浪费。因为每个字节的前半扇都被无用的位占满了,真正有意义的只有后面一半。

或者我们干脆这样做得了,我们来设计方案二:为了节省起见,所有后面的字符,我们统统都以10开头,只要遇见10我们就知道它只是整个字符流的一部分,它肯定不是开头,但是10这个开头已经被我们刚刚方案一的2字节字符占用了,怎么办?好办,把2字节字符的开头从10改成110,这样它就肯定不会和10冲突了。于是2字节字符变成

110x xxxx 10xx xxxx

再往后顺推,3字节字符变成

1110 xxxx 10xx xxxx 10xx xxxx

4字节字符变成

1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

好像比刚才的方案一有所节省呢!并且还带来了额外的好处:如果我没有见到前面的110或者1110开头的字节,而直接见到了10开头的字节,毫无疑问地可以肯定我遇到的不是一个完整字符的开头,我可以直接忽略这个错误的字节,而直接找下一个正确字符的开头。

这个改良之后的方案二就是UTF-8!

UTF-8表示的字符数

现在,我们来算一下在UTF-8方案里,每一种字节可以表示多少种字符。

1字节的字符,以0开头的,0xxx xxxx,后面7个有效位,2的7次方,最多可以表示128种字符。

2字节的字符,110x xxxx 10xx xxxx,数一数,11个x,所以是2的11次方,2的10次方是1024,11次方就是2048,很不幸,只能表示2048种字符,而我们的常用汉字就有3000多个,看来在这一区是放不下了,只好挪到3字节。

3字节的字符,1110 xxxx 10xx xxxx 10xx xxxx,数一数,16个x,2的16次方,最多可以表示65536个字符,所以我们的汉字就放在这一区,所以在UTF-8方案里我们的汉字都是以3个字节表示的。

所以这也就是这一张表的来历:

UTF-16

UTF-16是Unicode字符编码五层次模型的第三层:字符编码表(Character Encoding Form,也称为 "storage format")的一种实现方式。即把Unicode字符集的抽象码位映射为16位长的整数(即码元, 长度为2 Byte)的序列,用于数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。

起初,UTF-16任何字符对应的数字都用两个字节来保。但是,65536显然是不算太多的数字,用它来表示常用的字符是没一点问题,足够了。但如果加上很多特殊的就也不够了。于是,从1996年开始又来了第二个版本,用四个字节表示所有字符。这样就出现了UTF-8,UTF16,UTF-32。UTF-32就是把所有的字符都用32bit也就是4个字节来表示。然后UTF-8,UTF-16就视情况而定了,UTF-16可以选择两字节或四字节。

UTF-16 并不是一个完美的选择,它存在几个方面的问题:

  1. UTF-16 能表示的字符数有 6 万多,看起来很多,但是实际上目前 Unicode 5.0 收录的字符已经达到 99024 个字符,早已超过 UTF-16 的存储范围;这直接导致 UTF-16 地位颇为尴尬——如果谁还在想着只要使用 UTF-16 就可以高枕无忧的话,恐怕要失望了
  2. UTF-16 存在大小端字节序问题,这个问题在进行信息交换时特别突出——如果字节序未协商好,将导致乱码;如果协商好,但是双方一个采用大端一个采用小端,则必然有一方要进行大小端转换,性能损失不可避免(大小端问题其实不像看起来那么简单,有时会涉及硬件、操作系统、上层软件多个层次,可能会进行多次转换)

大小端转换?

1、因为utf8是变长编码,而且是单字节为编码单元,不存在谁在高位、谁在低位的问题,所以不存在顺序问题!顺便说一下解码,由于utf8的首字节记 录了总字节数(比如3个),所以读取首字节后,再读取后续字节(2个),然后进行解码,得到完整的字节数,从而保证解码也是正确的。

2、utf16是变长编码,使用1个16-bit编码单元或者2个16-bit编码单元,utf32是定长编码,这里拿utf16举例,在基本平面总是以2个字节为编码单元, 鉴于“第一条”编码单元与编码单元之间的顺序是正确的,问题只能在编码单元内部中字节与字节的顺序,由于硬件cpu的不同,编码单元内部字节 与字节的顺序不确定。假如cpu是大端序那么高位在前,如果cpu是小端序那么低位在前,为了区分,所以有了BOM(byte order mark),然后计 算机才能知道谁是高位,谁是低位,知道了高低位,从而能正确组装,然后才能解码正确。

例如,一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是“奎”还是“乙”?如果BOM 是大端序,那么代码点就应该是594E,那么就是“奎”,如果BOM是小端序,那么代码点就应该是4E59,就是“乙”了。

综上所述,因为utf8是单字节为编码单元,在网络传输时,不存在字节序列问题。在解码时,由于首字节记录了总字节数,所以能正确解码。

因为utf16是定长编码,总是以2个字节为编码单元,在网络传输时,不存在字节序列问题。在解码时,由于cpu硬件差异,存在字节序问题,所以通 过BOM来标记字节顺序;

另外,容错性低有时候也是一大问题——局部的字节错误,特别是丢失或增加可能导致所有后续字符全部错乱,错乱后要想恢复,可能很简单,也可能会 非常困难。(这一点在日常生活里大家感觉似乎无关紧要,但是在很多特殊环境下却是巨大的缺陷)

目前支撑我们继续使用 UTF-16 的理由主要是考虑到它是双字节的,在计算字符串长度、执行索引操作时速度很快。当然这些优点 UTF-32 都具有,但很多人毕竟还是觉得 UTF-32 太占空间了。

UTF-8 也不完美,也存在一些问题:

  1. 文化上的不平衡——对于欧美地区一些以英语为母语的国家 UTF-8 简直是太棒了,因为它和 ASCII 一样,一个字符只占一个字节,没有任何额外的存储负担;但是对于中日韩等国家来说,UTF-8 实在是太冗余,一个字符竟然要占用 3 个字节,存储和传输的效率不但没有提升,反而下降了。所以欧美人民常常毫不犹豫的采用 UTF-8,而我们却老是要犹豫一会儿
  2. 变长字节表示带来的效率问题——大家对 UTF-8 疑虑重重的一个问题就是在于其因为是变长字节表示,因此无论是计算字符数,还是执行索引操作效率都不高。为了解决这个问题,常常会考虑把 UTF-8 先转换为 UTF-16 或者 UTF-32 后再操作,操作完毕后再转换回去。而这显然是一种性能负担。

UTF-8 的优点:

  1. 字符空间足够大,未来 Unicode 新标准收录更多字符,UTF-8 也能妥妥的兼容,因此不会再出现 UTF-16 那样的尴尬
  2. 不存在大小端字节序问题,信息交换时非常便捷
  3. 容错性高,局部的字节错误(丢失、增加、改变)不会导致连锁性的错误,因为 UTF-8 的字符边界很容易检测出来,这是一个巨大的优点(正是为了实现这一点,咱们中日韩人民不得不忍受 3 字节 1 个字符的苦日子)

大神如何选择的呢?

因为无论是 UTF-8 和 UTF-16/32 都各有优缺点,因此选择的时候应当立足于实际的应用场景。例如在大神的习惯中,存储在磁盘上或进行网络交换时都会采用 UTF-8,而在程序内部进行处理时则转换为 UTF-16/32。对于大多数简单的程序来说,这样做既可以保证信息交换时容易实现相互兼容,同时在内部处理时会比较简单,性能也还算不错。(基本上只要你的程序不是 I/O 密集型的都可以这么干,当然这只是大神粗浅的认识范围内的经验,很可能会被无情的反驳)

作者:学霸猫

原文:https://my.oschina.net/wangch5453/blog/3044462