5
|
M. A. Kishawy Andy Guibert · 技术社区 · 14 年前 |
1
3
我尝试在Firefox和Opera中打开文件。我必须将字符编码设置为阿拉伯语Windows-1256,以便在两种浏览器中都能正确显示,所以文件的编码很可能就是这样。 注: 我最初是作为评论发布的,但被要求做一个回答。 |
2
4
你怎么知道它是ANSI编码的?如果它不是像utf-8那样的多字节编码,我猜它是使用像下面这样的阿拉伯代码页编码的: Windows-1256 . 您可以在十六进制编辑器中查看该文件,找出阿拉伯字符的数字,然后尝试找出它是用哪个编码/代码页创建的。 |
3
4
简短回答 :您的文本文件可能不是“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定义的所有100000多个字符进行编码,但它们的编码方式不同。两者都是 variable length encodings 也就是说,不是所有字符都使用相同的位数进行编码。 在UTF-8中,每个字符编码为1到4个字节。已选择编码,以便将ASCII字符编码为一个字节。 在UTF-16中,每个字符都被编码为两个四字节。这种编码最初是在Unicode少于64K字符时发明的,因此可以将每个字符编码为一个16位的单词。后来,当Unicode必须超过64K限制时,发明了一种方案,即使用范围为0xD800-0xDFFF的成对单词表示前64K(减去0x800)字符之外的字符。 要查看文件中的实际内容,请在十六进制编辑器中打开它:
|
4
4
不。
编辑 :对于这种混乱,我们必须感谢微软。__ansi_在编码方面没有很好地指定。通常,它代表代码页1252(__windows-1252_)的Windows默认编码,恰好对应于拉丁语派生的__western_字母。 但是,在其他国家,Windows使用的默认编码(在旧版本的Windows中,现在默认为UTF-8)是 不 Windows-1252是一种不同的编码方式,也被称为ansi。在这种情况下,代码页1256。 |
5
1
ANSI字符编码允许217个字符,不包含阿拉伯字母。我想文件可能使用了另一种编码方式。 在编辑过程中,似乎记事本存在问题,因为显示的内容明显超出了ansi字符集的能力。 |
6
1
首先,我下载了你的文件,并试图使用VIM检查它的编码,但它似乎不知道,在第二台机器上,它说
希望这有帮助。
编辑
:
ISO-8859-4和ISO-8859-13可以显示文本,没有错误,但可以显示非阿拉伯语的字符。 |
mjoudy · 如何将字符类中的阿拉伯数字转换为R中的英文数字? 6 年前 |
Sana'a Ala'a · 如何将日期从英语转换为阿拉伯语 6 年前 |
user8844576 · 阿拉伯语文本的URL分析错误 7 年前 |
Clay · 如何将iso8859_6中的文件名转换为utf-8? 7 年前 |
Sanish Joseph · 为什么Linq不能搜索阿拉伯语文本? 8 年前 |