2015-11-12 2 views
0

У меня есть сторонняя библиотека, которая возвращает мне некоторую строку - «(c) Љ®аЇ®а Ёп Њ © Єа®б®дв (Microsoft Corporation), 2015 Ј., БҐ Їа ў § йЁйҐл." , Я ищу в Google, как обнаружить кодировку этого текста, и получил, что это cp866 и отображается как KOI-7.Кодировка для richTextBox

Я пытаюсь закодировать его на windows-1251 и отображать строку в richTextBox. Но я получил следующий текст: «(c)« R »(« Microsoft Corporation »), 2015 год.« Ў? Ф ячя я © р ©? - «.»

Выходной текст должен быть - (c) Корпорация Майкрософт (Microsoft Corporation), 2015 г. Все права защищены.

Это русский язык (cyrilic)

 var fromEncodind = Encoding.GetEncoding(866);//from cp866 
     var bytes = fromEncodind.GetBytes(output); 
     var toEncoding = Encoding.GetEncoding(1251);//to windows-1251 
     output = toEncoding.GetString(bytes); 

ответ

1

На основании This Answer вы можете проверить codepage s вам нужно, и проверить строку после этого.

Найти страницы кодирования, нужно:

const string source = "(c) Љ®аЇ®а жЁп Њ ©Єа®б®дв (Microsoft Corporation), 2015 Ј. ‚ᥠЇа ў § йЁйҐ­л."; 
const string destination = "(c) Корпор ция М йкрософт (Microsoft Corporation), 2015 г. Все пр в з щищены."; 

foreach (var sourceEncoding in Encoding.GetEncodings()) 
{ 

    var bytes = sourceEncoding.GetEncoding().GetBytes(source); 
    foreach (var targetEncoding in Encoding.GetEncodings()) 
    { 
     if (targetEncoding.GetEncoding().GetString(bytes) == destination) 
     { 
      Console.WriteLine("Source Encoding: {0} TargetEncoding: {1}",sourceEncoding.CodePage,targetEncoding.CodePage); 
     } 
    } 
} 

// Result: Source Encoding: 1251 TargetEncoding: 866 

что подтверждает вы используете правильные кодовые страницы.

Затем, чтобы получить строку, вам нужно:

var decodedCyrillic = Encoding.GetEncoding(866).GetString(Encoding.GetEncoding(1251).GetBytes(source)); 

Вы были близки, но было дополнительное пространство в исходной строке вы указали. Это вызвало проблемы с кодировкой. Исходная строка в приведенном выше коде будет распознавать строковое кодирование.

+0

Кажется, что ваш выходной текст не был точным. Для декодирования исходной строки я использовал [Универсальный кириллический декодер] (http://2cyr.com/decode/?lang=en). –

Смежные вопросы