史上最全面的乱码讲解,能一字不落看到结尾的都是高手!

2021-03-24  本文已影响0人  容蘅

转载自:中国红客联盟

字符是计算机表达信息的主要方式,字符的主体部分是美国信息交换标准码ASCII,现代的 ASCII 是一个七位的编码标准,包括可打印符号、控制符号等。

由于计算机通常用“字节(byte)”这个八位的存储单位来进行信息交换,因此不同的计算机厂家对ASCII 进行了扩充对值大于 127 的 128 个符号予以定义,并赋予符号的形状。如 MS-DOS 使用 OEM 字符集,Windows 支持 ANSI、Symbol、OEM 等字符集,它们在值为 127 以上的部分一般都是不统一的, 这些“扩展的ASCII”字符只有在特定的环境下才具有“交换”的意义。

计算机以及很多计算机网络协议的制定都是建立在ASCII 码的基础上的,但是ASCII 码用于计算机信息的表示有很大的不足,主要表现在多国文字、图形、声音等二进制文件、信息压缩、信息保密等很多方面。 因此,在 ASCII 和扩展ASCII 码的基础上,用一定的规则定义一些新的信息表达形式,就形成了信息传输和处理中的一大类概念和事物,即编码和解码。当信息编码和解码能够统一的时候,信息是可以交换和被理解的;相反,当信息编码和解码不能够统一的时候,信息就不能被交换和理解,这就是“乱码”。(以下不再使用引号)

乱码的产生既然是信息编码和解码不能够统一的结果,因此,解决乱码的过程就是找到和编码相统一的解码方法,并对计算机软件不能全自动进行适当解码的信息进行重新的处理和解码,使得恢复信息可以被理解和交换的目的。

“我遇到乱码怎么办?”这是几乎我们每个人都曾经遇到的问题。我想稍微总结一下这个大家关心的问题也有一些时间了,不过 Internet 博大精深,到动笔时感到知识实在是极度匮乏。那些曾经熟悉的东西写出来好像就不是那么回事。在遇到的大量问题中, 更多的是出在与病毒相似却不是病毒的地方,比如计算机硬件软件本身的问题,某些国产反病毒软件因质量问题破坏文件和系统等等。所以,要把计算机用的更顺手,需要的是更多地了解你所使用的这个工具。防范病毒只是一个方面。一个新手,当你有机会迈进 Internet 的时候,你已经拥有这个博大精深的世界的一半了,只是有很多人还浑然不知。 Internet 就是你的老师,你自己就是你的老师。

乱码大全(2)──ROT13

Jvgu n tbbq pbafpvrapr bhe bayl fher erjneq, jvgu uvfgbel gur svany

whqtr bs bhe qrrqf, yrg hf tb sbegu gb yrnq gur ynaq jr ybir, nfxvat

Uvf oyrffvat naq Uvf uryc, ohg xabjvat gung urer ba rnegu Tbq'f jbex

zhfg gehyl or bhe bja.

Wbua Svgmtrenyq Xraarql

如果你自己能够看懂上面的短文,那么请忽略本文的其余部分。

如果有人写来一封莫名其妙的信, 含有“V Ybir lbh!”这样的句子,也许你还有可能以为这是德语。其实这是一种最简单的通用编码──ROT13, 这个句子实际上是“I Love you!”。不懂德语的人经常要闹笑话,Usenet 上经常有这样的标题:

This is not ROT13, it's German. 或者 This isn't German, it's

ROT13. 足见这个误会是世界性的。

ROT13 是一种简单的编码,它把字母分成前后两组,每组13个,编码和解码

的算法相同,仅仅交换字母的这两个部分,即:[a..m] --> [n..z] 和 [n..z]

--> [a..m] (--> Caesar 13)。 英国帝国大学计算机在线字典解释 ROT13 时说:

“It is used to enclose the text in a sealed wrapper that the reader

must choose to open - e.g. for posting things that might offend some

readers, or spoilers. ” ROT13 用简易的手段使得信件不能直接被识别和阅读,也不会被搜索匹配程序用通常的方法直接找到。经常用于 USENET 中发表一些攻击性或令人不快的言论或有简单保密需要的文章。

常见的 email/news reader 程序都可以对 ROT 13 进行解码,如 Netscape和 Microsoft News 等。一些 Text 编辑程序也可以实现 ROT13 的解码。 比如EditPad( http://www.tornado.be/~johnfg/   ,双牛站的 HTML TextEditor分类下面也可以下载)。由于 ROT13 是自逆算法,所以,解码和编码是同一个过程。

下面的 C 程序是最短的 ROT13 处理程序,它只有78个字符。当然在MSVC编译中会得到没有库声明的警告或错误。

main(c){while((c=getchar())+1)putchar(isalpha(c)?tolower(c)<'n'?c+13:c-13:c);}

(出处: http://www.cis.ohio-state.edu/~fine/rot13.html   )

下面的宏可用于 Word6、7 进行 ROT13 编解码:( 本程序的出处:Subject:

Re: ROT13 Macro / From: wncoan@aol.com (WNCOAN) / Date: 1998/01/29 /

Newsgroups: microsoft.public.word.programming )

Sub MAIN

StartOfDocument

While Not AtEndOfDocument()

If Asc(Selection$()) > 64 And Asc(Selection$()) < 91 Then

newAsc = Asc(Selection$()) + 13

If newAsc > 90 Then newAsc = newAsc - 26

CharRight 1, 1

Insert Chr$(newAsc)

ElseIf Asc(Selection$()) > 96 And Asc(Selection$()) < 123 Then

newAsc = Asc(Selection$()) + 13

If newAsc > 122 Then newAsc = newAsc - 26

CharRight 1, 1

Insert Chr$(newAsc)

Else

CharRight

EndIf

Wend

End Sub

下面这些网址以 cgi 的方式提供在线的 ROT13 转换。

http://otto.cmr.fsu.edu/~davis_t/rot13.cgi

http://as.alliancestudio.com/tk/rot13.html

http://www.rtg.se/~niclas/reddwarf/rot13.htm

到现在为止,您已经可以对本文开始的那一段代码进行解码了。那是美国前总统肯尼迪的一段演说。

图片来自网络
上一篇下一篇

猜你喜欢

热点阅读