我正在运行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可能有问题吗?
提前致谢
答案 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