Поиск не-Unicode символов в файле - PullRequest
0 голосов
/ 28 июня 2018

У меня есть блок текста (выдержка из БД), и я хотел бы найти символы, отличные от Юникода, потому что в некоторой части кода (python 3.6) при преобразовании значений в str I получите следующее ValueError: character U+ffffffc2 is not in range [U+0000; U+10ffff]

Так что, если я найду не-юникодные символы, я могу решить, что с ними делать. Я определенно не хочу заменять их чем-то другим.

Я нашел, как найти не-ascii-символы в файле с grep --color='auto' -P -n '[^\x00-\x7F]' file_name.txt, но я не уверен, дает ли это мне и не-unicode-символы.

1 Ответ

0 голосов
/ 02 июля 2018

См. http://p3rl.org/Encode#coderef-for-CHECK

# contains U+ffffffc2 encoded in UTF-8
› hex nonunicodefile
0000  61 62 63 fe 83 bf bf bf  bf 82 78 79 7a           abc..... ..xyz

› perl -MEncode -lne'
    # replace junk with empty string
    my $line = decode "UTF-8", $_, sub { "" };
    print encode "UTF-8", $line;
' < nonunicodefile
abcxyz
...