如何判断一个文件的编码格式 gb2312 gbk等

hzy694358 2011-03-09 05:37:52
UNICODE UTF8 ANSI这些网上很多资料,可是没看到判断
gb2312 或GBK等的,这个要如何判断呢?
...全文
1693 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
纠结的程序猿 2011-03-17
  • 打赏
  • 举报
回复
用PilotEdit Lite,
PilotEdit Lite可以自动检测编码。
比如你在一个文本文件中输入“没”,然后重新打开,PilotEdit是唯一一个可以正确识别这个汉字的文本编辑器。
hztj2005 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 geaglem 的回复:]
别想得太复杂,判断文件头就是
Unicode:FF、FE
Unicode big endian:FE、FF
UTF-8:EF、BB、BF
这些都可以用UltraEdit看出来
[/Quote]

用这个方法判断文件是Unicode,
如果不是,再根据GB2312-80编码的编码范围是高位0xa1-0xfe,低位是 0xa1-0xfe ,其中汉字范围为 0xb0a1 和 0xf7fe,
判断是gb2312 或GBK,GBK是gb2312的超集,它们是包含关系。

网上的说法:
txt没有文件头. 1. 看后缀名 2. txt是文本内容的(但要注意各种编码,就是上面的).
各种常见文件头——16进制形式
JPEG (jpg),文件头:FFD8FF

PNG (png),文件头:89504E47

GIF (gif),文件头:47494638

TIFF (tif),文件头:49492A00

Windows Bitmap (bmp),文件头:424D

CAD (dwg),文件头:41433130

Adobe Photoshop (psd),文件头:38425053

Rich Text Format (rtf),文件头:7B5C727466

XML (xml),文件头:3C3F786D6C

HTML (html),文件头:68746D6C3E

Email [thorough only]

(eml),文件头:44656C69766572792D646174653A

Outlook Express (dbx),文件头:CFAD12FEC5FD746F

Outlook (pst),文件头:2142444E

MS Word/Excel (xls.or.doc),文件头:D0CF11E0

MS Access (mdb),文件头:5374616E64617264204A

WordPerfect (wpd),文件头:FF575043

Postscript. (eps.or.ps),文件头:252150532D41646F6265

Adobe Acrobat (pdf),文件头:255044462D312E

Quicken (qdf),文件头:AC9EBD8F

Windows Password (pwl),文件头:E3828596

ZIP Archive (zip),文件头:504B0304

RAR Archive (rar),文件头:52617221

Wave (wav),文件头:57415645

AVI (avi),文件头:41564920

Real Audio (ram),文件头:2E7261FD

Real Media (rm),文件头:2E524D46

MPEG (mpg),文件头:000001BA

MPEG (mpg),文件头:000001B3

Quicktime (mov),文件头:6D6F6F76

Windows Media (asf),文件头:3026B2758E66CF11

MIDI (mid),文件头:4D546864
hzy694358 2011-03-14
  • 打赏
  • 举报
回复
GBK编码:
第一个字节:0x81-0xFE(129-254)
第二个字节:0x40-0xFE(64-254)

UTF-8:EF、BB、BF

这两个判断岂不是有冲突了
这样怎么判断是GBK或者是UTF8???
hzy694358 2011-03-14
  • 打赏
  • 举报
回复
到底如何判断呢??
????
geaglem 2011-03-12
  • 打赏
  • 举报
回复
Windows识别文件编码方式就是分析文件头,这也是最直接、最根本的方式!除此之外,无其他妙法!
geaglem 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jennyvenus 的回复:]
引用 8 楼 geaglem 的回复:
别想得太复杂,判断文件头就是
Unicode:FF、FE
Unicode big endian:FE、FF
UTF-8:EF、BB、BF
这些都可以用UltraEdit看出来

我装的那版本的ue看什么都是fffe格式的。
[/Quote]
我敢肯定是仁兄你的问题,fffe只专属于Unicode、改变一下编码格式,再看看!
用户 昵称 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 geaglem 的回复:]
别想得太复杂,判断文件头就是
Unicode:FF、FE
Unicode big endian:FE、FF
UTF-8:EF、BB、BF
这些都可以用UltraEdit看出来
[/Quote]
我装的那版本的ue看什么都是fffe格式的。
hzy694358 2011-03-12
  • 打赏
  • 举报
回复
不是只判断汉字
是判断这个文件的编码格式是否是GBK或GB2312
geaglem 2011-03-11
  • 打赏
  • 举报
回复
别想得太复杂,判断文件头就是
Unicode:FF、FE
Unicode big endian:FE、FF
UTF-8:EF、BB、BF
这些都可以用UltraEdit看出来
shenyi0106 2011-03-11
  • 打赏
  • 举报
回复
一个汉字 = 两个字节 且每个字节的数字都在128以上它不包含ANSI字符
但是UTF8,UTF16我就不知道了,貌似应该也和这个有关
Eleven 2011-03-11
  • 打赏
  • 举报
回复
GB2312-80编码的编码范围是高位0xa1-0xfe,低位是 0xa1-0xfe ,其中汉字范围为 0xb0a1 和 0xf7fe,如果只是简单地判断汉字,则只要查看高字节是否大于等于0xa1就可以了,还有就是,全角字符的高字节统统等于0xa3,所以很容易可以区别出全角字符来。
用户 昵称 2011-03-11
  • 打赏
  • 举报
回复
gbk > 2312,统计字符区间是最基本的做法。
hzy694358 2011-03-11
  • 打赏
  • 举报
回复
编码实现,不是借助其他工具
xiaoguailong3 2011-03-09
  • 打赏
  • 举报
回复
这个。。。你下个软件就看判断txt文件是什么格式的了
hztj2005 2011-03-09
  • 打赏
  • 举报
回复
你要判断一个文件是gb2312 还是GBK?

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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