поиск документа для non-ascii - PullRequest
13 голосов
/ 13 января 2012

Приложение на моем компьютере необходимо прочитать в текстовом файле. У меня есть несколько, и один не работает; программа не может прочитать его и говорит, что где-то в нем есть плохой персонаж. Мое первое предположение состоит в том, что где-то там есть персонаж, не являющийся ascii, но я не знаю, как его найти. Perl или любое другое регулярное выражение было бы неплохо. Есть идеи?

Ответы [ 3 ]

12 голосов
/ 13 января 2012

Вы можете использовать [^\x20-\x7E] для сопоставления не-ASCII символа.

например grep -P '[^\x20-\x7E]' suspicious_file

4 голосов
/ 13 января 2012
perl -wne 'printf "byte %02X in line $.\n", ord $& while s/[^\t\n\x20-\x7E]//;'

найдет каждый символ, который не является символом ASCII, символ табуляции, пробел или символ новой строки.

Если он сообщает 0D s (возврат каретки) в файлах, которые O.K., то измените \t\n на \t\n\r.

Если он сообщает только 0D s в плохих файлах, то вы, вероятно, можете исправить эти файлы, запустив на них dos2unix.

2 голосов
/ 12 апреля 2016

Если вы также используете табуляторы в исходном коде, попробуйте этот шаблон:

[^\x08-\x7E]

Работает также в Notepad ++

...