Приложение на моем компьютере должно читать в текстовом файле. У меня их несколько, и один не работает; программа не читает ее и говорит мне, что в ней где-то есть плохой символ. Прежде всего я предполагаю, что там где-то есть символ не-ascii, но я не знаю, как его найти. Perl или любое общее регулярное выражение было бы неплохо. Любые идеи?
Искать документ для не-ascii
Ответ 1
Вы можете использовать [^\x20-\x7E]
для соответствия символу, отличному от ASCII.
например. grep -P '[^\x20-\x7E]' suspicious_file
Ответ 2
perl -wne 'printf "byte %02X in line $.\n", ord $& while s/[^\t\n\x20-\x7E]//;'
найдет каждый символ, который не является символом ASCII, вкладкой, пробелом или новой линией.
Если он сообщает 0D
(возврат каретки) в файлах, которые являются O.K., затем измените \t\n
на \t\n\r
.
Если он сообщает только 0D
в плохих файлах, возможно, вы можете исправить эти файлы, запустив dos2unix
на них.
Ответ 3
Если вы используете табуляторы в своем исходном коде, попробуйте этот шаблон:
[^\x08-\x7E]
Работает также в Notepad ++