【问题标题】:Batch UTF-8 Validation Tool?批量 UTF-8 验证工具?
【发布时间】:2010-12-22 03:19:18
【问题描述】:

有谁知道我可以用来验证一堆 UTF-8 的 XML 文件的应用程序/服务/方法吗?

基本上,我有大量假定为 UTF-8 的 XML 文件,其中一些恰好包含一些虚假字符,导致它们无法在内容查看器中正确呈现。

我知道我可以使用此答案中的方法一次检查一个:How to check whether a file is valid UTF-8?

...但是一次有数千个 XML 文件怎么样?

【问题讨论】:

  • 我猜不可能认真地验证文件是 utf-8,因为即使文本对人类没有任何意义,一切都可能是 utf-8。可能有一个工具会根据统计数据尝试猜测
  • 好吧,当我在 TextWrangler 中打开其中一个 XML 文件时,它给了我一条错误消息,说有一些不符合指定 UTF-8 格式的无效字符,所以显然它知道..

标签: validation utf-8 batch-file


【解决方案1】:

要使用 iconv 扩展 jamessan 的答案,这里是一个修改后的 shell 脚本,您可以将它与 unix find 命令结合使用,以检查目录中与某个文件扩展名正则表达式模式匹配的所有文件(包括它的子级)

#!/bin/sh

for i in "$@"
do

    if ! iconv -f utf8 $i >/dev/null 2>&1;
    then
            echo "failed: $i"
    #else
        #   echo "ok: $i"
    fi

done

假设您将脚本命名为 check_UTF8.sh,您可以这样称呼它:

$ find -E . -type f -iregex ".*(.js|.css|.php|.tpl|.html)$" | xargs /path/to/check_UTF8.sh

与文件扩展名模式正则表达式匹配的所有文件(在本例中为 .js/.css/.php/.tpl/.html)都将通过管道传输到 check_UTF8.sh 脚本,以及任何具有无效 UTF- 8 以完整路径的形式回显,相对于您从中调用脚本的目录

【讨论】:

    【解决方案2】:

    为什么您不能从链接的问题中获取解决方案之一并将其应用于您的情况?迭代所有要检查的文件,在它们上运行 iconv -f utf8 并发出失败的文件列表似乎相当简单。

    更新
    由于您尚未指定需要进行此测试的情况或环境,因此很难提供具体建议。您链接的帖子提供了测试您想要什么的方法,因此只需了解您有什么可用于实施解决方案的问题。

    假设一个基本的 *nix 环境,这个简单的 shell 脚本提供了一个基本的检查,警告典型的文件名通配问题。

    #!/bin/sh
    for f in *.xml; do
        if ! iconv -f utf8 $f >/dev/null 2>&1; then
            echo $f
        fi
    done
    

    除非您提供有关您的具体要求的更多信息,否则很难知道人们的任何答案是否真正相关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多