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

时间:2014-10-20 08:35:08

标签: utf-8 character-encoding grep

我正在运行Windows 7并且(必须)使用Turbo Grep(Borland的东西)来搜索文件。 我有这个文件的2个版本,一个用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

此命令的帮助列出:

Options are one or more option characters preceded by "-", and optionally followed by "+" (turn option on), or "-" (turn it off). The default is "+". -r+ Regular expression search -l- File names only -c- match Count only -n- Line numbers -v- Non-matching lines only -i- Ignore case -d- Search subdirectories -z- Verbose -e Next argument is searchstring -w- Word search -o- UNIX output format Default set: [0-9A-Z_] -q- Quiet: supress normal output -h- Supress display of filename -u xxx Create a copy of grep named 'xxx' with current options set as default

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

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

提前致谢

1 个答案:

答案 0 :(得分:1)

是的,有一个不同的w7使用UTF-16小端不是UTF-8,UTF-8用于unix,linux和计划9用于引用一些操作系统。

Jon Skeet解释:1

  

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

     

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

UTF-16更接近于ANSI,因此ANSI运行良好。

如果你只使用ascii,两种编码都可以使用,但是使用特殊字符作为äöü等你需要在windows中使用UTF-16,在其他情况下使用UTF-8