Turbo Grep-在UTF-8文件中查找特殊字符

Turbo Grep-在UTF-8文件中查找特殊字符,utf-8,character-encoding,grep,Utf 8,Character Encoding,Grep,我正在运行Windows7,并且(必须)使用Turbo Grep(Borland之类的)来搜索文件。 我有这个文件的两个版本,一个用UTF-8编码,一个用ANSI编码 如果我在ANSI文件上运行以下grep,我会得到预期的结果,但在UTF-8文件上没有得到相同语句的结果: grep -ni "[äöü]" myfile.txt [-n表示行号,-i表示忽略案例] Turbo Grep版本为: Turbo GREP 5.6 Copyright (c) 1992-2010 Embarcadero

我正在运行Windows7,并且(必须)使用Turbo Grep(Borland之类的)来搜索文件。 我有这个文件的两个版本,一个用UTF-8编码,一个用ANSI编码

如果我在ANSI文件上运行以下grep,我会得到预期的结果,但在UTF-8文件上没有得到相同语句的结果:

grep -ni "[äöü]" myfile.txt
[-n表示行号,-i表示忽略案例]

Turbo Grep版本为:

Turbo GREP 5.6 Copyright (c) 1992-2010 Embarcadero Technologies, Inc.
Syntax:  GREP [-rlcnvidzewoqhu] searchstring file[s] or @filelist
         GREP ? for help
此命令的帮助列出:

选项是一个或多个选项字符,前面有“-”和可选字符
后跟“+”(打开选项)或“-”(关闭选项)。默认值为“+”。
-r+正则表达式搜索-l-仅限文件名
-c-仅匹配计数-n-行号
-v-仅限非匹配行-i-忽略大小写
-d-搜索子目录-z-详细
-e下一个参数是searchstring-w-Word搜索
-o-UNIX输出格式默认设置:[0-9A-Z_2;]
-q-安静:超级正常输出
-h-suppress文件名显示
-u xxx创建名为“xxx”的grep副本,当前选项设置为默认值

正则表达式是:一个或多个字符的一次或多次出现 可以选择用引号括起来。以下符号经过特殊处理: ^行开始$行结束 . 任意字符\引用下一个字符 *匹配零个或多个+匹配一个或多个 [aeiou0-9]匹配a、e、i、o、u和0到9; [^aeiou0-9]匹配除a、e、i、o、u和0到9之外的任何内容

UTF-8中这些字符的编码有问题吗?Turbo Grep和UTF-8可能有问题吗


提前感谢

是的,有不同的w7使用UTF-16 little endian而不是UTF-8,UTF-8在unix、linux和plan 9中用于一些操作系统

Jon Skeet解释道:

ANSI:没有固定的ANSI编码,有很多。通常当人们说“ANSI”时,他们的意思是“我的系统的默认代码页”,它是通过Encoding.default获得的,通常是Windows-1252

UTF-8:可变长度编码,1-4字节覆盖每个当前字符。ASCII值被编码为ASCII

UTF-16与ANSI更为相似,因此,出于这个原因,使用ANSI可以很好地工作

如果您只使用ascii,则两种编码都是可用的,但对于特殊字符,如äöü等,您需要在windows中使用UTF-16,在其他系统中使用UTF-8