强制更改扩展名后,文件上显示的字符是什么



最近我将.apk文件的扩展名更改为.txt,尽管如此,我还是可以在记事本上用一些随机字符打开它,而这些字符在文件中的键盘上是不可用的

org/antlr/runtime/ANTLRFileStream.class…TmOÓP=w[×QËÀ)ê|A…ÑETÔ¢NP¢™ãË—º•Q3ZÓcüþ¿j",£ß4ñGÏmÇñ˽Ïs{žçœçeûùëóW ±¨á0F5d0ÖA˔‹LÈã’ŠËR˜PqEƒ†Iy•ØkÒºÞÁЂ´¦TL«˜H­95{ÙÚ°2K/­×–Y³Üªù(ð·:%œv'¸!Гû÷óðª@¢èUܵä¸öòæÆ Û_±^ÔÂt^Ùª­Z¾#ýæc"XwêKž_5-7¨ù¦¿éΆmÞZ^Y*ÍS “ÛÖ¹µ¹7eûUàxn]% µ‘Ð^TÊvË^…kžUˆ;u_àTw<sÁ}µDL%ÛªØ>ùÄš@º…Rø˜¨;o),0ǚԞ݇ؓ‡àΪ<ò6ýr³¥GsÃ횪EOÌ_…É =è•Ç¬Ž#8ª£½ú^fùõ˜Ž›¸%pü IT{`Á2þ¶<Š:î`NÇ<î긇A ˜èÿïˆ8Ç0Q¥»¨#- Ze7srRÉšíVƒõÐ]0rí&tÀ”O´‡[Y±K ö¬H›¯Ü %÷¬8Ì) r+åšW·ÑÏF†¿,bd—i%h³­ˆá8½YÄiª‘

不仅如此,在转换许多其他扩展时,如.jar.xapk等,都会显示这些字符

请任何人解释一下,这些字符是基于什么因素,以及操作系统是如何决定或尝试在不支持的文件中显示哪些字符的

有没有办法通过这些数据获得原始内容?

假设您创建了一个文本编辑器,它可以编写和保存文本文件以及打开文本文件。您还定义了将用于在二进制文件中保存文本的编码(保存时所有文件都是二进制的(。所以你的编码看起来如下:

Your encoding                               Emacs encoding    
TEXT       BINARY                          TEXT       BINARY
A          01000001                         ă         01000001    
B          01000010                         Ћ         01000010         
...                                         ...
Z          01011010                         Ϡ         01011010   

假设您创建了一个以"ABZ"为内容的文件。保存时,此文件包含值010000010100001001011010。当你用文本编辑器打开这个文件时,编辑器会发现010000010100001001011010是文件内容,使用上面的编码,它知道它的"ABZ",因此它会在屏幕上打印"ABZ"。

现在假设您使用emacs打开相同的文件,因为emacs使用自己的编码,所以它显示";ăϠ";,emacs没有什么问题。它只是不知道数据是使用自定义编码编写的。

所以重点是每个文件都是以特定的格式编写的,例如APK格式只能被Android系统正确理解。当您尝试在文本编辑器中打开APK文件时,它只是试图以与上面示例中emacs相同的方式理解二进制数据。

有没有办法通过这些数据获得原始内容?

如果您知道写入数据时使用的原始编码,则可以使用相同的编码读取文件的内容。

最新更新