Может быть любая из следующих причин:
Я ответил на ваш вопрос?
Если нет, предоставьте фрагмент кода, чтобы мы могли лучше понять проблему.
Я использовал это, чтобы сделать что-то подобное некоторое время назад:
Используйте IsTextUnicode Win32.
В общем смысле это - трудный promlem. См.: http://blogs.msdn.com/oldnewthing/archive/2007/04/17/2158334.aspx.
UTF-8 разработан способом, что ему вряд ли закодируют текст в произвольном 8bit-кодировании как latin1, декодируемый к надлежащему unicode, использующему UTF-8.
Таким образом, минимальный подход - это (псевдокод, я не говорю.NET):
попытка: u = some_text.decode ("UTF-8") кроме UnicodeDecodeError: u = some_text.decode ("наиболее вероятное кодирование")
Для наиболее вероятного кодирования каждый обычно использует, например, latin1 или cp1252 или что бы то ни было. Более сложные подходы могли бы попробовать и найти соединения определенного знака языка, но я не знаю о чем-то, что делает это как библиотеку или некоторых такой.
Необходимо прочитать эту статью Raymond Chen. Он вдается в подробности о том, как программы могут предположить то, что кодирование (и часть забавы, которая прибывает из предположения),
http://blogs.msdn.com/oldnewthing/archive/2004/03/24/95235.aspx
hacky техника могла бы быть должна взять MD5 текста, затем декодировать текст и повторно закодировать его в различной кодировке, MD5'ing каждый. Если Вы соответствуете Вам, предполагают, что это - то кодирование.
Это, очевидно, слишком медленно для чего-то, что обрабатывает много файлов, но для чего-то как текстовый редактор я видел, что он работал.
Кроме этого, это будут руки грязное портирование библиотек Java из этого сообщения, которое прибыло из Delphi ТАК вопрос или использование функции IE MLang.