在文件中搜索非Unicode字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在文件中搜索非Unicode字符相关的知识,希望对你有一定的参考价值。

我有一个文本块(db的摘录),我想找到非unicode字符,因为在我将值转换为python 3.6时代码的某些部分(str)我得到以下ValueError: character U+ffffffc2 is not in range [U+0000; U+10ffff]

所以,如果我能找到非unicode字符,我可以决定如何处理它们。我绝对不想用别的东西替换它们。

我发现如何在grep --color='auto' -P -n '[^x00-x7F]' file_name.txt文件中找到非ascii字符,但我不确定这是否也给了我非unicode字符。

答案

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

以上是关于在文件中搜索非Unicode字符的主要内容,如果未能解决你的问题,请参考以下文章

Perforce unicode问题:使用非ascii字符的同步文件会导致截断

使用非utf-8编码在Python中解析XML

如何比较包含非英文字符的 unicode 字符串以按字母顺序排序?

一个文件查看全部Unicode字符

如何在 Postgres 中搜索包含给定 unicode 字符的所有行

Android - 将搜索传递给片段