LinuxSir.cn,穿越时空的Linuxsir!

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

怎样可以看出一个文件是什么编码的?EUC-JIS?Big5?GB?

[复制链接]
发表于 2006-8-2 11:49:57 | 显示全部楼层 |阅读模式
我没有linux系统,但在windows下装了一个cygwin,有点模拟unix吧

问题是:我有很多文件是用EUC-JIS码写的,现在不小心在其中一个或几个文件中不小心混入了非EUC-JIS码,应该怎样找到这一个或几个文件?file命令能实现吗?

劳烦讲解的详细些,尽量少用专业术语,用的话最好先解释下
菜鸟在此多谢了!
发表于 2006-8-2 23:50:02 | 显示全部楼层
这个问题比较复杂。如果你用C语言的话,你需要使用glibc的libiconv库函数来试图转换编码。在转换时,判断转换操作的错误代码,可以找出非EUC-JIS码。perl和python也有相应的模块,但是我没用过。自己查查资料吧。
回复 支持 反对

使用道具 举报

发表于 2006-8-3 03:31:27 | 显示全部楼层
如果用 linux 的话  有 iconv 程序,转换文件内容编码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-3 11:15:27 | 显示全部楼层
Post by wxk
这个问题比较复杂。如果你用C语言的话,你需要使用glibc的libiconv库函数来试图转换编码。在转换时,判断转换操作的错误代码,可以找出非EUC-JIS码。perl和python也有相应的模块,但是我没用过。自己查查资料吧。


我查了VC的库函数,没有找到glibc的libiconv啊……郁闷,能告诉我是什么C的库吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-3 12:43:24 | 显示全部楼层
Post by windwiny
如果用 linux 的话  有 iconv 程序,转换文件内容编码


iconv可以直接转换成统一的euc-jis码吗?可以实现仅仅是检查吗?
回复 支持 反对

使用道具 举报

发表于 2006-8-4 01:35:11 | 显示全部楼层
你到底是在开发linux程序呢还是在开发windows程序呢?如果是windows程序,去msdn.microsoft.com查查看。如果是Linux下的开发,用google最快了。devhelp也不错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-4 14:23:15 | 显示全部楼层
做嵌入开发的
我在windows下,使用一个cygwin软件,模拟了unix
然后在要找到在哪些文件中混有了非euc-jis码
回复 支持 反对

使用道具 举报

发表于 2006-8-4 14:25:57 | 显示全部楼层
尝试转换代码,在转换时,判断转换操作的错误代码,可以找出非EUC-JIS码。

这个我觉得比较可行,或者你看看 firefox 这些软件是如何自动识别 charset 的,我记得有一个 python 库是干这个的,忘记在哪里见过了:(
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-4 23:05:56 | 显示全部楼层
555555……谁能帮我解决这个问题啊
回复 支持 反对

使用道具 举报

发表于 2006-8-5 03:12:31 | 显示全部楼层
我曾经做过totem的改造工作。主要是针对读取metadata时候,totem是先把媒体中的信息按照iso-8859-1读出来,再转换成utf-8编码的。因此,中文、日文等就会是乱码。我解决的办法是这样的:根据我的实际情况,中文和日文mp3歌曲,我写了一段程序,首先是试着把读出来的utf-8编码转回iso-8859-1编码,然后,将这个编码转换成gbk编码,如果出错,再试着转换成sjis。这里面用的函数就是libiconv库函数。所以,我建议你用这种方法写个程序来判断。至于你说找不到这个头文件,不妨看看你的glibc的库安装全了没有,另外,VC的配置可能有问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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