任何人都知道我可以用来验证UTF-8的一堆XML文件的app / service /方法吗?
基本上我有大量的XML文件,假设是UTF-8,其中一些碰巧包含一些虚假的字符,导致它们无法在内容查看器中呈现。
我知道我可以使用此答案中的方法一次检查一个:How to check whether a file is valid UTF-8?
...但是同时有几千个XML文件呢?
答案 0 :(得分:5)
为什么不能从链接的问题中选择一种解决方案并将其应用到您的情况中?看起来迭代你要检查的所有文件,在它们上运行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
除非您提供有关您的具体要求的更多信息,否则很难知道人们的答案是否真正相关。
答案 1 :(得分:0)
使用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相对于您从
调用脚本的目录,以其完整路径的形式回显