简短回答:可能,您的文本文件不是“ANSI”编码的,而是UTF-8。
龙回答:
首先,术语 “ANSI”(在Windows上)并不意味着一个固定的编码;它的含义取决于你的语言设置。例如,在西欧和美国,它通常是Windows-1252(ISO/IEC 8859-1, also known as latin-1的变体),在日本,它是SHift JIS,在阿拉伯国家,它是ISO/IEC_8859-6。
如果您使用的是非阿拉伯语版本的Windows,并且没有改变您的语言设置,并且您可以在记事本中打开文件时看到阿拉伯文字母,那么肯定不会使用这些ANSI编码中的任何一种。相反,它可能是Unicode。
请注意,我不是指“UNICODE”,它在Windows上通常表示UTF-16LE。它也可能是UTF-8。这两种编码都可以编码当前在Unicode中定义的所有100.000个字符,但它们以不同的方式进行编码。两者都是variable length encodings,这意味着并非所有字符都使用相同数量的位进行编码。
在UTF-8中,每个字符都被编码为一到四个字节。编码被选择为使得ASCII字符被编码在一个字节中。
在UTF-16中,每个字符都被编码为两个四字节。这种编码最初是在Unicode少于64K字符时发明的,因此可以将每个字符编码成单个16位字。后来,当明确Unicode必须超出64K限制时,才发明了一种方案,其中0xD800-0xDFFF范围内的字对用于表示第一个64K(减去0x800)字符之外的字符。
要查看该文件实际上是在十六进制编辑器打开它:
- 如果前两个字节是FF FE,那么它很可能UTF-16LE(小端)
- 如果前两个字节是FE FF,那么它很可能UTF-16BE(大端,不太可能在Windows)
- 如果前三个字节是EF BB BF,那么它很可能UTF-8
- 如果你看到很多的00字节,它可能是UTF-16(或UTF-32,如果你看到成对的00字节)
- 如果阿拉伯字符占用一个字节,则可能是ISO-8859-6(例如, ش将是D5)。
- 如果阿拉伯字符占用多个字节,它很可能UTF-8(例如ش将D8 B4)。
你有访问linux吗?如果是这样,'file'命令是什么意思? – 2010-02-14 12:17:04
不,我无法访问linux ...如果你想做,并希望提供帮助,请从我在02版提供的链接下载我的文件,并让我知道你得到了什么。感谢你的合作。 – 2010-02-14 12:23:38
@João'file'在这个文件上产生BS。 :-( – 2010-02-14 12:30:54