C# 强制文件的代码页,以便它能够正确显示使用windows-1256编码的字符?

C# 强制文件的代码页,以便它能够正确显示使用windows-1256编码的字符?,c#,encoding,utf-8,arabic,codepages,C#,Encoding,Utf 8,Arabic,Codepages,我需要保存一个包含阿拉伯字符的纯文本文件,然后 打开文件时,阿拉伯语字符必须显示为阿拉伯语 我可以使用Encoding.GetEncoding(1256)毫无问题地插入名称并保存文件-再次使用1256作为StreamWriter的代码页 但是,当在Notepad++中查看生成的文件时,字符显示不正确,我必须故意将代码页切换回1256,以便它们以阿拉伯语显示 然后我将文件传输给第三方,但他们无法更改代码页(我不知道为什么!),因此无法读取阿拉伯语 是否有任何方法可以保存文件,以便将要使用的代码页“

我需要保存一个包含阿拉伯字符的纯文本文件,然后 打开文件时,阿拉伯语字符必须显示为阿拉伯语

我可以使用
Encoding.GetEncoding(1256)
毫无问题地插入名称并保存文件-再次使用1256作为
StreamWriter
的代码页

但是,当在Notepad++中查看生成的文件时,字符显示不正确,我必须故意将代码页切换回1256,以便它们以阿拉伯语显示

然后我将文件传输给第三方,但他们无法更改代码页(我不知道为什么!),因此无法读取阿拉伯语


是否有任何方法可以保存文件,以便将要使用的代码页“嵌入”到文件中?

将文件另存为UTF-8。这应该会在文件的开头自动包含一个神奇的BOM(字节顺序标记),这样打开文件的应用程序就会知道它是用UTF-8编码的。

Works:)我的理解是,为什么用1256编码不能将BOM作为1256?或者,用另一种方式问同样的问题,为什么我必须说UTF-8而不是1256?用1256编码只能编码阿拉伯语和一些拉丁字符。UTF-8可以同时对所有支持的字符集进行编码。因此,如果你的文件包含不同的阿拉伯语语言,那么如果你计划使用1256,它将真的变得一团糟@蓝色芯片1256没有物料清单。当打开文件时,记事本等可以识别的一般BOM表仅为UTF-8和UTF-16,所有其他文件在保存时均不包含任何有关所用编码的信息。