如何有条件地重新编码为UTF-8?

约尼克

我要统一随时间推移在不同计算机上收集的一大堆文本文件的编码。我主要是从ISO-8859-1到UTF-8。这很好地转换了一个文件:

recode ISO-8859-1..UTF-8 file.txt

我当然想对所有文件进行自动批处理,仅对每个文件运行以上操作就会出现问题,即已经使用UTF-8编码的文件的编码将被破坏。(例如,字符“a”最初在ISO-8859-1将出现这样的,视为UTF-8,如果上述重新编码完成两次:� -> ä -> ä

我的问题是,什么样的脚本仅在需要时才运行重新编码,即仅针对尚未采用目标编码的文件(在我的情况下为UTF-8)?

通过查看重新编码手册页,我无法弄清楚如何做这样的事情。因此,我认为这归结为如何轻松检查文件的编码,或者至少是UTF-8。这个答案意味着您可以通过重新编码识别有效的UTF-8文件,但是如何呢?只要我可以在bash脚本中有条件地使用结果,其他任何工具也都可以。

约尼克

该脚本改编自harrymc的想法,该想法有条件地对一个文件进行了编码(基于某些UTF-8编码的斯堪的纳维亚字符的存在),似乎对我来说可以很好地工作。

$ cat recode-to-utf8.sh 

#!/bin/sh
# Recodes specified file to UTF-8, except if it seems to be UTF-8 already

result=`grep -c [åäöÅÄÖ] $1` 
if [ "$result" -eq "0" ]
then
    echo "Recoding $1 from ISO-8859-1 to UTF-8"
    recode ISO-8859-1..UTF-8 $1 # overwrites file
else
    echo "$1 was already UTF-8 (probably); skipping it"
fi

(批处理文件当然是简单的事,例如for f in *txt; do recode-to-utf8.sh $f; done。)

注意:这完全取决于脚本文件本身为UTF-8。而且由于这显然是非常有限的解决方案,适合于我碰巧拥有的文件类型,请随时添加更好的答案,以更通用的方式解决问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在命令行中有条件地在perl中将默认编码设置为utf-8

来自分类Dev

使用R dyplyr有条件地重新编码/替换变量?

来自分类Dev

将缺失值重新编码为有条件的均值

来自分类Dev

重新编码无法在utf-8中解码的字节

来自分类Dev

如何使用Java 8可选正常,可以有条件地返回一个值或抛出异常?

来自分类Dev

有条件地向Java 8流添加操作

来自分类Dev

有条件的组映射条目-Java 8

来自分类Dev

有条件的Java8 Lambda分组

来自分类Dev

使用带有条件的 java 8 groupBy

来自分类Dev

在ISO-8859-1中重新编码utf8..cp1250结果

来自分类Dev

Python 3.3是否能比2.7更好,才能将残废的Web文本解码和重新编码为UTF-8?喜欢,好多了?

来自分类Dev

Python 3.3是否能比2.7更好,才能将残废的Web文本解码和重新编码为UTF-8?喜欢,好多了?

来自分类Dev

如何使用dir以UTF-8编码简单地列出目录的所有文件?

来自分类Dev

具有实体的List <String>编码为UTF-8

来自分类Dev

如何有条件地渲染

来自分类Dev

如何使用utf8将[] rune编码为[] byte

来自分类Dev

如何基于检查多个列的多个值来有条件地编码新变量

来自分类Dev

为Django表单编码UTF-8

来自分类Dev

将Bytearray编码为UTF-8

来自分类Dev

Java的8列表处理 - 添加元素有条件

来自分类Dev

Java 8版本-有条件的列表列表

来自分类Dev

TypeScript:使函数参数有条件地为可选

来自分类Dev

有条件地为较小的屏幕添加scrollView

来自分类Dev

有条件地为属性分配值

来自分类Dev

VBA 有条件地为变量赋值

来自分类Dev

如何将Utf-8中的webscrapped图像链接编码为ASCII,但仍具有功能链接?

来自分类Dev

Gstreamer:如何在不重新编码的情况下将rtpvp8depay传递到webmmux?

来自分类Dev

通过调用+ class有条件地为iOS 6和7进行编码是否安全?

来自分类Dev

通过调用+ class有条件地为iOS 6和7进行编码是否安全?

Related 相关文章

  1. 1

    在命令行中有条件地在perl中将默认编码设置为utf-8

  2. 2

    使用R dyplyr有条件地重新编码/替换变量?

  3. 3

    将缺失值重新编码为有条件的均值

  4. 4

    重新编码无法在utf-8中解码的字节

  5. 5

    如何使用Java 8可选正常,可以有条件地返回一个值或抛出异常?

  6. 6

    有条件地向Java 8流添加操作

  7. 7

    有条件的组映射条目-Java 8

  8. 8

    有条件的Java8 Lambda分组

  9. 9

    使用带有条件的 java 8 groupBy

  10. 10

    在ISO-8859-1中重新编码utf8..cp1250结果

  11. 11

    Python 3.3是否能比2.7更好,才能将残废的Web文本解码和重新编码为UTF-8?喜欢,好多了?

  12. 12

    Python 3.3是否能比2.7更好,才能将残废的Web文本解码和重新编码为UTF-8?喜欢,好多了?

  13. 13

    如何使用dir以UTF-8编码简单地列出目录的所有文件?

  14. 14

    具有实体的List <String>编码为UTF-8

  15. 15

    如何有条件地渲染

  16. 16

    如何使用utf8将[] rune编码为[] byte

  17. 17

    如何基于检查多个列的多个值来有条件地编码新变量

  18. 18

    为Django表单编码UTF-8

  19. 19

    将Bytearray编码为UTF-8

  20. 20

    Java的8列表处理 - 添加元素有条件

  21. 21

    Java 8版本-有条件的列表列表

  22. 22

    TypeScript:使函数参数有条件地为可选

  23. 23

    有条件地为较小的屏幕添加scrollView

  24. 24

    有条件地为属性分配值

  25. 25

    VBA 有条件地为变量赋值

  26. 26

    如何将Utf-8中的webscrapped图像链接编码为ASCII,但仍具有功能链接?

  27. 27

    Gstreamer:如何在不重新编码的情况下将rtpvp8depay传递到webmmux?

  28. 28

    通过调用+ class有条件地为iOS 6和7进行编码是否安全?

  29. 29

    通过调用+ class有条件地为iOS 6和7进行编码是否安全?

热门标签

归档