Преобразование массива int в строку

255
22 апреля 2017, 21:39

Имеется массив целых чисел, который был получен из строки в кодировке cp866. Как из этого массива получить строку (имеются символы кириллицы)?

Answer 1

Ваш текст:

Microsoft Windows [Version 6.3.9600]
(c) Корпорация Майкрософт (Microsoft Corporation), 2013. Все п

Для начала, нужно превратить картинку в текст, это легко сделать через какой-нибудь онлайн-сервис. Я воспользовался https://www.onlineocr.net/, предварительно откусив в редакторе frame окна (но вообще-то это должны были сделать вы сами!). Получилась следующая строка:

77 105 99 114 111 115 111 102 116 32 87 105 110 100 111 119 115 32 91 86 101 114 115 105 111 110 32 54 46 51 46 57 54 48 48 93 13 10 40 99 41 32 1033 174 1072 1031 174 1072 160 1078 1025 1087 32 1034 160 169 1028 1072 174 1073 174 1076 1074 32 40 77 105 99 114 111 115 111 102 116 32 67 111 114 112 111 114 97 116 105 111 110 41 44 32 50 48 49 51 46 32 8218 1073 1168 32 1031

Затем, в строке есть символы с кодами старше 255, но большинство попадают в диапазон ASCII, следовательно, имеет смысл предположить, что это закодированы unicode-значения символов.

Получаем:

var s = "77 105 99 114 111 115 111 102 116 32 87 105 ..."; // тут вся строка
var chars = s.Split().Select(int.Parse).Select(n => (char)n);
var intermediateResult = new string(chars.ToArray());

Результат выглядит почти хорошо:

Microsoft Windows [Version 6.3.9600]
(c) Љ®аЇ®а жЁп Њ ©Єа®б®дв (Microsoft Corporation), 2013. ‚ᥠЇ

Латиница на месте, а вот с кириллицей что-то не то. Учитывая наличие упоминания CP 866 в вопросе, предположим, что изначально текст был в кодировке CP 866, и был интерпретирован как текст в какой-то другой кодировке (после чего скопирован в Unicode-формате). Какой может быть другая кодировка? Очевидная версия — кодировка русскоязычных текстов по умолчанию, CP 1251.

В этих предположениях пробуем получить исходные байты, и интерпретировать их назад как символы в кодировке CP 866:

var bytes = Encoding.GetEncoding(1251).GetBytes(intermediateResult);
var result2 = Encoding.GetEncoding(866).GetString(bytes);

Получаем читаемый результат.

Всё!

READ ALSO
Поиск данных в бд по хеш коду. Entity framework

Поиск данных в бд по хеш коду. Entity framework

Подскажите, как организовать поиск строки в сущности по хеш - кодуЧто - то нигде нету инфы на этот счёт

268
Сериализация List Unity3D

Сериализация List Unity3D

Не получается сериализовать класс при помощи JsonUtilityToJson()

219
Вопрос про SortedSet и Comparer

Вопрос про SortedSet и Comparer

Есть SortedSetДля сравнения использую стандартный метод CompareTo()

247
Binding ConverterParameter={Binding …}

Binding ConverterParameter={Binding …}

Мне нужно в качестве параметра для конвертера указать Binding, но это невозможно, так как ConverterParameter не является DependencyProperty

210