当前位置:  开发笔记 > 编程语言 > 正文

如何通过脚本在Unix中找到文件的编码

如何解决《如何通过脚本在Unix中找到文件的编码》经验,为你挑选了5个好方法。

我需要找到放在目录中的所有文件的编码.有没有办法找到使用的编码?

file命令无法执行此操作.

我感兴趣的编码是:ISO-8859-1.如果编码是其他任何东西,我想将文件移动到另一个目录.



1> Shalom Craim..:

听起来像你在寻找enca.它可以猜测甚至在编码之间进行转换.只需看一下手册页.

或者,如果失败,请使用file -i(linux)或file -I(osx).这将输出文件的MIME类型信息,其中还包括字符集编码.我也找到了一个人工页面 :)


@vladkras如果你的utf-8文件中没有非ascii字符,那么它与ascii :)无法区分
恩卡听起来很有趣.不幸的是,检测似乎非常依赖于语言,支持的语言集并不是很大.我(德)失踪:-(无论如何很酷的工具.
"enca"对于分析用英语编写的文件似乎完全没用,但是如果你碰巧在爱沙尼亚语中看某些东西,它可能会解决你所有的问题.非常有用的工具,...

2> 小智..:
file -bi 

如果你喜欢为一堆文件做这个

for f in `find | egrep -v Eliminate`; do echo "$f" ' -- ' `file -bi "$f"` ; done


为什么使用-b参数?如果您只是执行文件-i*,它会为每个文件输出猜测的字符集.
我对-b参数也很好奇.手册页说它意味着"简短"`不要将文件名添加到输出行`

3> qwert2003..:

uchardet - 从Mozilla移植的编码检测器库.

用法:

~> uchardet file.java 
UTF-8

各种Linux发行版(Debian/Ubuntu,OpenSuse-packman,...)提供二进制文件.



4> Wolfgang Fah..:

这是一个使用文件-I和iconv的示例脚本,适用于MacOsX对于您的问题,您需要使用mv而不是iconv

#!/bin/bash
# 2016-02-08
# check encoding and convert files
for f in *.java
do
  encoding=`file -I $f | cut -f 2 -d";" | cut -f 2 -d=`
  case $encoding in
    iso-8859-1)
    iconv -f iso8859-1 -t utf-8 $f > $f.utf8
    mv $f.utf8 $f
    ;;
  esac
done


`file -b --mime-encoding`只输出字符集,因此可以避免所有管道处理

5> Norbert Hart..:

很难确定它是否是iso-8859-1.如果你的文本只有7位字符,也可能是iso-8859-1,但你不知道.如果您有8位字符,那么上面区域字符也存在于顺序编码中.因此,您必须使用字典来更好地猜测它是哪个单词,并从那里确定它必须是哪个字母.最后,如果你发现它可能是utf-8而不是你确定它不是iso-8859-1

编码是最困难的事情之一,因为你永远都不知道是否有什么东西告诉你

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有