为什么以文本形式打开图像文件会打印出奇怪的字符?
Why does opening an image file as text prints weird characters?
每次我打开 jpeg、png、ico 等时,它总是打印这个。为什么我打开它,因为我认为每个软件都有一个代码,但那些处理图像或颜色的软件恰好很奇怪?那么谁能解释一下呢?
MZ ÿÿ ¸ @ € º ´ Í! ¸ LÍ!This program cannot be run in DOS mode.
$ PE L OhAY à 8 þU ` @ @… °U K ` ø € H .text 6 8 `.rsrc ø ` : @ @.reloc € > @ B àU H ¸+ ø) 0 %{
(
* 0! 4 r p{
(
Ð r pr p %r- p¢%r1 p¢%r; p¢%rE p¢%rQ p¢ %r- pÐ s
¢%r1 pÐ s
¢%r; pÐ s
¢%rE pÐ s
¢%rQ pÐ s
¢%r] pÐ s
¢%re pÐ s
¢r p{
(
只有纯文本文件存储在纯文本中。图像、程序、视频、音乐和大多数其他文件都以各种 二进制 格式存储。当您在文本编辑器中打开二进制文件时,它假定您告诉它打开的文件是纯文本并开始读取数据。文本编辑器读取每个数据块(可以被认为是一系列数字)按顺序将数据转换成相应的文本字符。由于文件中的数据是二进制的,数据不打算显示为字符,我们看到了大量的随机字符。这是一个相当大的简化,但它足够接近并且应该可以帮助您理解。
如您所见,格式中一定也存储了一些纯文本,因为我们可以阅读 This program cannot be run in DOS mode.
和其他一些随机文本。
此外,您计算机上的文件不是程序,除非它们以 .exe
结尾(这也是一种简化,但足够接近)。例如,双击图像文件会告诉操作系统启动图像编辑程序,OS 会告诉程序打开图像。图片本身不是程序。
不过,我建议您阅读以下内容:How do I ask a good question? This question is probably better-suited for https://superuser.com/。
值得一提的是,从技术上讲,每个 文件都存储为二进制文件,甚至是纯文本文件。纯文本编辑器期望文件的每个字节对应一个字符(通常来自 ASCII table)。当您在纯文本编辑器中打开图像文件时,它会尝试将图像文件的每个字节解释为文本,但图像文件中的字节并不打算作为字符读取,因此它们将作为无意义的字符出现。
这就像看着时钟并将当前时间的每个数字(例如,9:23)替换为字母表中的一个字母。字母表中的第 9 个字母是 I,第 2 个是 B,第 3 个是 C,这就是 IBC。 "But that's not a word!" 你可能会说。当然不是。我们只是想把时间读成字母,所以结果是胡说八道。这基本上就是在文本编辑器中打开图像文件时发生的情况。
每次我打开 jpeg、png、ico 等时,它总是打印这个。为什么我打开它,因为我认为每个软件都有一个代码,但那些处理图像或颜色的软件恰好很奇怪?那么谁能解释一下呢?
MZ ÿÿ ¸ @ € º ´ Í! ¸ LÍ!This program cannot be run in DOS mode.
$ PE L OhAY à 8 þU ` @ @… °U K ` ø € H .text 6 8 `.rsrc ø ` : @ @.reloc € > @ B àU H ¸+ ø) 0 %{
(
* 0! 4 r p{
(
Ð r pr p %r- p¢%r1 p¢%r; p¢%rE p¢%rQ p¢ %r- pÐ s
¢%r1 pÐ s
¢%r; pÐ s
¢%rE pÐ s
¢%rQ pÐ s
¢%r] pÐ s
¢%re pÐ s
¢r p{
(
只有纯文本文件存储在纯文本中。图像、程序、视频、音乐和大多数其他文件都以各种 二进制 格式存储。当您在文本编辑器中打开二进制文件时,它假定您告诉它打开的文件是纯文本并开始读取数据。文本编辑器读取每个数据块(可以被认为是一系列数字)按顺序将数据转换成相应的文本字符。由于文件中的数据是二进制的,数据不打算显示为字符,我们看到了大量的随机字符。这是一个相当大的简化,但它足够接近并且应该可以帮助您理解。
如您所见,格式中一定也存储了一些纯文本,因为我们可以阅读 This program cannot be run in DOS mode.
和其他一些随机文本。
此外,您计算机上的文件不是程序,除非它们以 .exe
结尾(这也是一种简化,但足够接近)。例如,双击图像文件会告诉操作系统启动图像编辑程序,OS 会告诉程序打开图像。图片本身不是程序。
不过,我建议您阅读以下内容:How do I ask a good question? This question is probably better-suited for https://superuser.com/。
值得一提的是,从技术上讲,每个 文件都存储为二进制文件,甚至是纯文本文件。纯文本编辑器期望文件的每个字节对应一个字符(通常来自 ASCII table)。当您在纯文本编辑器中打开图像文件时,它会尝试将图像文件的每个字节解释为文本,但图像文件中的字节并不打算作为字符读取,因此它们将作为无意义的字符出现。
这就像看着时钟并将当前时间的每个数字(例如,9:23)替换为字母表中的一个字母。字母表中的第 9 个字母是 I,第 2 个是 B,第 3 个是 C,这就是 IBC。 "But that's not a word!" 你可能会说。当然不是。我们只是想把时间读成字母,所以结果是胡说八道。这基本上就是在文本编辑器中打开图像文件时发生的情况。