C#: Как узнать, есть ли у меня правильная кодировка

Я новичок в файлах, потоках и различных кодовых страницах. Видите, это моя проблема:

Я получаю текстовые файлы, и некоторые из них были созданы с кодовой страницей Windows-1252, некоторые все еще IBM850, а иногда они UTF8. Когда я импортирую их, моя база данных показывает все виды символов для ä, ö, ü, ß, потому что я читаю их с неправильной кодовой страницей. только когда я импортирую их с правильной кодовой страницей, все работает нормально.

Вот что, по-я думал, было бы хорошим подходом:

Преобразовать ä, ö, ü, ß в массив байтов с кодовой страницей X

eg:

byte[] myAeKl = Encoding.GetEncoding("IBM850").GetBytes("ä");

byte[] myAeGr = Encoding.GetEncoding("IBM850").GetBytes("Ä");

пройдитесь по текстовым файлам и сравните каждый массив байтов букв с приведенными выше. Если обнаружено, что используется эта кодовая страница, в противном случае попробуйте использовать другую кодовую страницу.

Вот чего я не понимаю: Как я могу сравнить байты из букв в текстовом файле с массивами байтов букв, которые я ищу. Например:

if (Textfile.Letter == myAeKl || Textfile.Letter == myAeGr)
...

Есть ли другой способ получить правильную кодовую страницу? Имею ли я право на упрек в решении?

5
задан Oded 26 January 2012 в 10:21
поделиться