我尝试检测我的文件中使用了哪个字符编码.
我尝试使用此代码来获取标准编码
public static Encoding GetFileEncoding(string srcFile)
{
// *** Use Default of Encoding.Default (Ansi CodePage)
Encoding enc = Encoding.Default;
// *** Detect byte order mark if any - otherwise assume default
byte[] buffer = new byte[5];
FileStream file = new FileStream(srcFile, FileMode.Open);
file.Read(buffer, 0, 5);
file.Close();
if (buffer[0] == 0xef && buffer[1] == 0xbb && buffer[2] == 0xbf)
enc = Encoding.UTF8;
else if (buffer[0] == 0xfe && buffer[1] == 0xff)
enc = Encoding.Unicode;
else if (buffer[0] == 0 && …Run Code Online (Sandbox Code Playgroud) 可能重复:
在C#中确定字符串的编码
许多文本编辑器(如Notepad ++)可以检测任意文件的编码.我可以在C#中检测到文件的编码吗?
我有一组markdown文件要传递给jekyll项目,需要找到它们的编码格式,即使用程序或API的带有BOM的UTF-8或没有BOM或ANSI的UTF-8。
如果我通过文件的位置,则必须列出文件,读取并作为结果产生编码。
是否有任何代码或API?
我已经尝试了有效方法中提到的用于流阅读器的sr.CurrentEncoding来找到任何文件的Encoding,但是结果随notepad ++结果的不同而不同。
还试图用https://github.com/errepi/ude(Mozilla的通用字符检测器),如建议https://social.msdn.microsoft.com/Forums/vstudio/en-US/862e3342-cc88-478f- bca2-e2de6f60d2fb / detect-encoding-of-file?forum = csharpgeneral,方法是在c#项目中实施ude.dll,但结果不如notepad ++那样有效,文件编码显示为utf-8,但从程序,结果是带有BOM的utf-8。
但是我应该从两种方法都得到相同的结果,那么问题出在哪里呢?