Пакетный инструмент проверки UTF-8? - PullRequest
3 голосов
/ 01 декабря 2009

Кто-нибудь знает приложение / сервис / метод, который я мог бы использовать для проверки набора файлов XML для UTF-8?

По сути, у меня есть тонна XML-файлов, которые предположительно имеют формат UTF-8, и некоторые из них содержат некоторые поддельные символы, из-за которых они не отображаются прямо в средстве просмотра содержимого.

Я знаю, что могу проверить по одному с помощью методов, найденных в этом ответе: Как проверить, является ли файл действительным UTF-8?

... но как насчет тысяч файлов XML одновременно?

Ответы [ 2 ]

5 голосов
/ 01 декабря 2009

Почему вы не можете взять одно из решений из связанного вопроса и применить их к вашей ситуации? Кажется, что было бы довольно просто перебрать все файлы, которые вы хотите проверить, запустить iconv -f utf8 для них и создать список файлов, где это не удалось.

Обновление
Поскольку вы не указали ситуацию или среду, в которой вам необходимо выполнить этот тест, трудно дать конкретный совет. В публикации, на которую вы ссылаетесь, предлагаются методы тестирования того, что вы хотите, поэтому вам просто нужно знать, что у вас есть для реализации решения.

Предполагая базовое * nix envornment, этот простой сценарий оболочки предоставляет базовую проверку, предупреждая о типичных проблемах с именами файлов.

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

Если вы не предоставите больше информации о ваших конкретных требованиях, трудно понять, действительно ли какие-либо ответы у людей действительно актуальны.

0 голосов
/ 28 июля 2011

для расширения ответа jamessan с помощью iconv, вот модифицированный сценарий оболочки, который вы можете использовать вместе с командой 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 выводится в виде полного пути относительно каталога, из которого вы вызываете скрипт из

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...