我有一个文件,该文件是ANSI编码。然而,它显示了阿拉伯字母。这个文本文件是由一些程序(我没有信息),但是它似乎有某种内部编码(如果我可以说,如果这是可能的)阿拉伯文的信件作出现。

是有这样的事情?如果没有,怎么能ANSI文件显示的阿拉伯字母?

*如果可能的解释Java码


版01

当我打开它在记事本++它显示的网页的编码是ANSI。请查看这张照片:

http://www.4shared.com/file/221862075/e8705951/text-Windows.html


版02

你可以检查的文件:

http://www.4shared.com/file/221853641/3fa1af8c/data.html

有帮助吗?

解决方案

我试图打开文件在两个Firefox和Opera。我不得不设置的字符编码阿拉伯语的Windows-1256让它在这两种浏览器中正确显示,所以文件的编码是最有可能是。

注意: 我最初发布这个作为一个评论,但被要求让一个答案。

其他提示

你怎么知道它的ANSI编码?如果它不是一个多字节编码,如UTF-8,我的猜测是它的使用像这样的一个阿拉伯语代码页编码:的 <强>窗-1256

您可以看看在十六进制编辑器文件,并找出号码阿拉伯字符具有和这种方式试图找出哪些编码/代码页它与创建。

简短的回答:有可能的,你的文本文件不是"ANSI"编码,但utf-8。

只要回答:

第一,该术语"ANSI"(Windows)并不意味着一个固定编码;它的意义取决于你的语言设置。例如,在西欧和美国,它通常会 Windows-1252 (一的变体 ISO/IEC8859-1,也称为拉丁-1),在日本,它的 移JIS, 和在阿拉伯国家,它的 ISO/IEC_8859-6.

如果您使用的是非阿拉伯语版本的Windows和起伏不改变了你的语言设置的,你可以看看阿拉伯字母的文件,当你打开它在记事本,那么它肯定不是在任何这些ANSI编码。相反,它可能是 Unicode.

注意我的意思不是"UNICODE",这通常意味着窗户 UTF-16LE.这可能是 UTF-8 为好。两者都是编码,可以进行编码,所有的每100 000+符的当前定义的Unicode,但他们这样做的方式不同。两者都是 变长编码, ,意味着,并不是所有的字符编码使用的同位数。

在UTF-8,每个字符编码为一至四节。编码已经这样选择的ASCII字符编码在一个字节。

在UTF-16,每个字符编码为两个四字节。这个编码最初被发明出来的时候Unicode只有不到64K字,和一种因此可以进行编码的每一个字在一个单一的16位字。后来,当人们清楚地看到,Unicode会已经成长超出了64K限制,方案发明了其对话范围0xD800-0xDFFF用于代表人物之外的第64K(减0x800)符。

看看有什么实际的文件,打开它在六编:

  • 如果前两个字节FF菲,那么很可能UTF-16LE(little endian)
  • 如果第一两个字节是FE FF,那么很可能UTF-16BE(big-endian,不可能在Windows)
  • 如果第一三个字节的EF BB BF,那么很可能UTF-8
  • 如果你看到很多00字节,它可能UTF-16(或UTF-32,如果你看到的对00字节)
  • 如果阿拉伯字符占据一个单一的字节,它可能是ISO-8859-6(例如ش会D5)。
  • 如果阿拉伯字符占据多个字节,它可能UTF-8(例如ش将是D8B4)。
  

是否有这样的事?

没有

  

如果没有,怎么能在ANSI文件显示阿拉伯字母?

这不是一个Windows的ANSI编码的文件。更可能的是,它采用了的可变长编码,最有可能的UTF-8:UTF-8等同于它们在US-ASCII位置(实际上,它是这样设计的),并由此推断也有许多共同的字符位置对于Windows的ANSI。

修改:我们要感谢微软这种混乱。 “ANSI”当涉及到编码没有很好规定。通常它的意思代表与代码页1252(“Windows的1252”),这恰好对应于“西方”字母源自拉丁文的Windows的默认编码。

然而,在其他国家使用的Windows的默认编码(在旧版本的Windows ......今天,默认为UTF-8)的的Windows的1252,而是一个不同的编码,然后将其也被称为“ANSI”。在这种情况下,代码页1256。

ANSI字符编码允许217个字符,并且不包含阿拉伯字母。我认为也许是文件使用的替代编码。

Anwsering您的编辑,看来这个问题是用记事本+ +,因为什么被显示显然是超出了ANSI字符集的能力。

第一,我下载你的文件,并试图使用vim来检查它的编码,它似乎并不知道和第二机它说latin1这可能是类似记事本++发生了什么(给了通用的答案)。< BR> 所以我也file data.txt和输出是这样的:

data.txt: ISO-8859 text, with CRLF line terminators

希望这有助于。

修改:结果 使用浏览器的事情表明,这个答案是不正确。

ISO-8859-4和ISO-8859-13可以显示文本,没有出现错误,但人物,其中未在阿拉伯语。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top