原本是未知格式的文件,选择用记事本打开,结果全是乱码,怎样还原?
2个回答
展开全部
……
你只是打开,没改动过什么东西,而且还没保存,何来“还原”一说?
用记事本打开是乱码主要是因为该文件是以二进制方式存储的,而不是以“文本文件”方式存储的,计事本处理文件的方式“比较简单”,它把所有的文件都当成“文本文件”来处理,它读取一个字节或者两个字节的数值后就去查找当前系统加载的代码页,看看在代码页中那个数值对应的字符是什么,然后把那个字符显示出来。你打开的文件本身就不是“文本文件”,显示的怎么可能是你认识的东西呢。
p.s. 在计算机中从来就不存在什么“文本文件”,所有的数据全是二进制。文本文件存储的方式是这样的,ASCII码中有的字符占一个字节,其他的字符(像汉语,日语等等)就用两个字节表示,它就是一个接一个这么排起来的,不存在其他的结构体(c语言中的struct),所以说计事本处理文件的方式“简单”。
给你留个问题,激发一下学习的兴趣。
其实光光一个“文本文件”也很不简单,还是要考虑不少情况。就拿中文来说吧,你打开记事本程序,文件--另存为,你会看到有个编码方式,下面有ansi,unicode,unicode big endian,utf-8四种编码方式,你随便保存成一种再打开,显示的还是刚才你打进去的东西,很神奇吧,电脑是怎么知道要用哪种编码方式打开文件的呢?
你只是打开,没改动过什么东西,而且还没保存,何来“还原”一说?
用记事本打开是乱码主要是因为该文件是以二进制方式存储的,而不是以“文本文件”方式存储的,计事本处理文件的方式“比较简单”,它把所有的文件都当成“文本文件”来处理,它读取一个字节或者两个字节的数值后就去查找当前系统加载的代码页,看看在代码页中那个数值对应的字符是什么,然后把那个字符显示出来。你打开的文件本身就不是“文本文件”,显示的怎么可能是你认识的东西呢。
p.s. 在计算机中从来就不存在什么“文本文件”,所有的数据全是二进制。文本文件存储的方式是这样的,ASCII码中有的字符占一个字节,其他的字符(像汉语,日语等等)就用两个字节表示,它就是一个接一个这么排起来的,不存在其他的结构体(c语言中的struct),所以说计事本处理文件的方式“简单”。
给你留个问题,激发一下学习的兴趣。
其实光光一个“文本文件”也很不简单,还是要考虑不少情况。就拿中文来说吧,你打开记事本程序,文件--另存为,你会看到有个编码方式,下面有ansi,unicode,unicode big endian,utf-8四种编码方式,你随便保存成一种再打开,显示的还是刚才你打进去的东西,很神奇吧,电脑是怎么知道要用哪种编码方式打开文件的呢?
参考资料: 好久没说过这么多话了,语言组织了半天,表达能力下降得厉害啊……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询