notepad怎么识别读取的文件的编码方式?

挨踢民工的乐章 2011-06-02 09:36:55
notepad怎么识别文件的编码方式,一个文件如果是unicode(utf-16)编码,理论上一个unicode字符可能被当成两个ascii编码

但现在它可以很“智能”的区分文件的编码方式,正确的解析,它是怎么做到的?
...全文
931 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bokutake 的回复:]

你可以试试打开记事本输入“联通”两个字,然后保存,关闭。再打开那个文件。
[/Quote]
notepadg有bug?还是unicode编码本身有bug?
nakedavril 2011-06-02
  • 打赏
  • 举报
回复
学习了
赵4老师 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lishanchao 的回复:]
C/C++ code

通常,当一个软件打开一个文本时,它要做的第一件事是决定这个文本究竟是使用哪种字
符集的哪种编码保存的。软件有几种途径来决定文本的字符集和编码,
最标准的途径是检测文本最开头的几个字节,楼主可以以不同编码保存后研究一下各种格式看看.比如

开头字节 Charset/encoding
EF BB BF……
[/Quote]
这就是所谓BOM
沭水河畔 2011-06-02
  • 打赏
  • 举报
回复

通常,当一个软件打开一个文本时,它要做的第一件事是决定这个文本究竟是使用哪种字
符集的哪种编码保存的。软件有几种途径来决定文本的字符集和编码,
最标准的途径是检测文本最开头的几个字节,楼主可以以不同编码保存后研究一下各种格式看看.比如

开头字节 Charset/encoding
EF BB BF UTF-8
FE FF UTF-16/UCS-2, little endian
FF FE UTF-16/UCS-2, big endian
FF FE 00 00 UTF-32/UCS-4, little endian.
00 00 FE FF UTF-32/UCS-4, big-endian
辰岡墨竹 2011-06-02
  • 打赏
  • 举报
回复
你可以试试打开记事本输入“联通”两个字,然后保存,关闭。再打开那个文件。
辰岡墨竹 2011-06-02
  • 打赏
  • 举报
回复
http://tech.sina.com.cn/s/n/2003-12-10/1541266585.shtml
ryfdizuo 2011-06-02
  • 打赏
  • 举报
回复
http://www.cublog.cn/u1/33885/showart_439597.html
unicode有两个字节文件头
luciferisnotsatan 2011-06-02
  • 打赏
  • 举报
回复
你可以用一个能打开二进制的编译器打开.txt文件,你就会发现,unicode编码的文件,头部有个识别符。

另外,也可以通过推测,计算出是什么编码。
AnYidan 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 benben2301 的回复:]
引用 9 楼 bokutake 的回复:

引用 8 楼 benben2301 的回复:

notepadg有bug?还是unicode编码本身有bug?


都不是,只是notepad在这个问题上想得太简单了,文件太短的话是无法通过统计方式判断内容的,而这个编码在两种编码里都是合法的,它不知道是UTF-8还是GB2312。用Word打开的话,当它无法确定是那种编码时,会弹出对话框询……
[/Quote]

不会
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bokutake 的回复:]

引用 8 楼 benben2301 的回复:

notepadg有bug?还是unicode编码本身有bug?


都不是,只是notepad在这个问题上想得太简单了,文件太短的话是无法通过统计方式判断内容的,而这个编码在两种编码里都是合法的,它不知道是UTF-8还是GB2312。用Word打开的话,当它无法确定是那种编码时,会弹出对话框询问。你选择GB2312时,预览内容就是正确了。……
[/Quote]
word本身可以记录文件的编码方式吧?用word编辑的doc文件不会出现这种状况吧?
hzy694358 2011-06-02
  • 打赏
  • 举报
回复
BOM是可以标识文件的编码格式,但是BOM对一个文件来说并不是必须的
也就是说一个文件可能没有BOM,这个时候,文件的编码格式就要根据文件的内容逐个去分析了,
也就是说没有绝对的方式能够完全正确的知道文件的编码格式
除非遍历所有的文件内容并分析
辰岡墨竹 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 benben2301 的回复:]

notepadg有bug?还是unicode编码本身有bug?
[/Quote]

都不是,只是notepad在这个问题上想得太简单了,文件太短的话是无法通过统计方式判断内容的,而这个编码在两种编码里都是合法的,它不知道是UTF-8还是GB2312。用Word打开的话,当它无法确定是那种编码时,会弹出对话框询问。你选择GB2312时,预览内容就是正确了。

70,011

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧