LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1963|回复: 10

如何判断文本文件的编码方式?[已解决]

[复制链接]
发表于 2005-11-28 15:22:14 | 显示全部楼层 |阅读模式
一般都是用UTF8的locale,所以编辑的东西大多是以UTF8编码方式保存的。但是有的程序只认识GBK/GB2312的编码方式。这个可以用iconv解决。
但是若我不知道某一文件的编码方式,应该如何判断它是UTF8、gbk、gb18030或者gb2312等等呢?

搜了好久也没有结果!!
 楼主| 发表于 2005-11-28 18:00:10 | 显示全部楼层
咋没人知道呢?
难道没有别人碰到这种问题么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-29 14:32:26 | 显示全部楼层
是因为我的意思没有表达清楚么?再重述一遍,知道的麻烦说一声,谢谢!
---------------------
我的意思是:
我有个文件myfile,它的编码方式是UTF8的
有没有一种程序,比如abc,可以知道文本文件的编码方式,执行
abc myfile
就可以输出类似“encoding is UTF-8”

有没有??
回复 支持 反对

使用道具 举报

发表于 2005-11-29 15:01:45 | 显示全部楼层
据我所知,encoding 是不会明显地表现在txt文件的内容里的。不知道MS Word是怎么做到自动检测txt文件的编码的?
回复 支持 反对

使用道具 举报

发表于 2005-11-29 15:58:48 | 显示全部楼层
大概是先检测BOM,没有的话再如何判断是否是文本文件。

file命令可以做到,如果是搞开发的可以看一下源码。
回复 支持 反对

使用道具 举报

发表于 2005-11-29 18:08:42 | 显示全部楼层
Post by troll
大概是先检测BOM,没有的话再如何判断是否是文本文件。

file命令可以做到,如果是搞开发的可以看一下源码。

从BOM可以看出文件是否为unicode的编码。但对于其它8bit的字符集来说,BOM就象Windows下的文件的扩展名一样,不太可靠。
虽然unicode编码很容易检测,但除unicode外的很多字符编码都采取的是8bit的字符流:如gb2312, gbk这样的中文编码。想要gedit, vim这样的编辑器自动检测出一个text文件的字符集,不会显示乱码,恐怕只有一个个字符集地试,然后匹配各国文字的字典库才行。
所以说,还是unicode好啊. ;)
回复 支持 反对

使用道具 举报

发表于 2005-11-29 22:39:01 | 显示全部楼层
其实Windows里的Word或者记事本对编码方式的识别也不是非常可靠.
以前网上不是有经典的"移动"和"联通"的游戏嘛(用记事本写移动,保存,再打开;用记事本写联通,保存,再打开)
回复 支持 反对

使用道具 举报

发表于 2005-11-29 23:18:20 | 显示全部楼层
file yourfilename
回复 支持 反对

使用道具 举报

发表于 2005-11-29 23:30:20 | 显示全部楼层
哪具体有那几种编码方式呢!?
回复 支持 反对

使用道具 举报

发表于 2005-11-30 09:21:53 | 显示全部楼层
用locale -a命令就可以看见很多编码集
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表