首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iconv UTF-8的任何编码

iconv UTF-8的任何编码
EN

Stack Overflow用户
提问于 2012-03-22 23:01:40
回答 5查看 47.8K关注 0票数 23

我正在尝试将iconv指向一个目录,并且无论当前编码如何,所有文件都将转换为UTF-8

我正在使用这个脚本,但您必须指定您要使用的编码。如何让它自动检测当前的编码?

dir_iconv.sh

代码语言:javascript
复制
#!/bin/bash

ICONVBIN='/usr/bin/iconv' # path to iconv binary

if [ $# -lt 3 ]
then
  echo "$0 dir from_charset to_charset"
  exit
fi

for f in $1/*
do
  if test -f $f
  then
    echo -e "\nConverting $f"
    /bin/mv $f $f.old
    $ICONVBIN -f $2 -t $3 $f.old > $f
  else
    echo -e "\nSkipping $f - not a regular file";
  fi
done

终端线

代码语言:javascript
复制
sudo convert/dir_iconv.sh convert/books CURRENT_ENCODING utf8
EN

回答 5

Stack Overflow用户

发布于 2012-05-01 10:20:25

你可以使用标准的gnu utils文件和awk获取你需要的东西。示例:

file -bi .xsession-errors给我:“文本/纯文本;字符集=us-ascii”

所以file -bi .xsession-errors |awk -F "=" '{print $2}'给了我"us-ascii“

我在脚本中使用它,像这样:

代码语言:javascript
复制
CHARSET="$(file -bi "$i"|awk -F "=" '{print $2}')"

if [ "$CHARSET" != utf-8 ]; then
  iconv -f "$CHARSET" -t utf8 "$i" -o outfile
fi
票数 10
EN

Stack Overflow用户

发布于 2012-11-07 03:37:01

把它们都编译起来。转到目录,创建dir2utf8.sh

代码语言:javascript
复制
#!/bin/bash
# converting all files in a dir to utf8

for f in *
do
  if test -f $f then
    echo -e "\nConverting $f"
    CHARSET="$(file -bi "$f"|awk -F "=" '{print $2}')"
    if [ "$CHARSET" != utf-8 ]; then
      iconv -f "$CHARSET" -t utf8 "$f" -o "$f"
    fi
  else
    echo -e "\nSkipping $f - it's a regular file";
  fi
done
票数 5
EN

Stack Overflow用户

发布于 2014-04-03 23:13:16

下面是使用recodeuchardet放置所有文件的my solution

代码语言:javascript
复制
#!/bin/bash

apt-get -y install recode uchardet > /dev/null
find "$1" -type f | while read FFN # 'dir' should be changed...
do
  encoding=$(uchardet "$FFN")
  echo "$FFN: $encoding"
  enc=`echo $encoding | sed 's#^x-mac-#mac#'`
  set +x
  recode $enc..UTF-8 "$FFN"
done

将其放入convert-dir-to-utf8.sh并运行:

代码语言:javascript
复制
bash convert-dir-to-utf8.sh /pat/to/my/trash/dir

请注意,sed是这里针对mac编码的一种变通方法。许多不常见的编码都需要这样的变通方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9824902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档