Як прочитати кракозябри - їаёўґв stack overflow російською

Вказати кодування при читанні вмісту файлу. Тобто для читання ( "перекодування" при читанні) з 866 достатньо лише вказати Encoding:

Якщо ж у вас виник специфічний кейс, наприклад, ви отримали вже зіпсований текст як рядок - то досить просто зберегти його назад в байти із зазначенням неправильної кодування, і прочитати із зазначенням правильної:

Правда, спрацює це тільки в разі, якщо читання байт в неправильному кодуванні (за щасливим збігом!) Виявиться оборотним. Нижче показаний приклад, коли це не так.

З приводу "перекодування":

Ви намагаєтеся полагодити наслідки, а не саму проблему.

Як виникає така проблема:

Рішення, яке ви намагаєтеся застосувати - це "конвертувати рядок". Тобто ви сподіваєтеся що наступний код спрацює:

Якщо не підібрати потрібне кодування файлу при читанні - його не вийде записати назад.

Раптово, цей код видає два різних файлу, хоча ніякого "перекодування" не було.

Є рядок "ЇаЁўҐв". Яким чином її прочитати?

Ваш 'привіт'. 1251 і 866 обидві однобайтні, підтримують кирилицю і покривають кодовий діапазон без втрат при невірної інтерпретації (866-1251, 1251-866).

Якщо потрібно тільки прочитати, то не потрібно нічого конвертувати. Досить вибрати вірну кодову сторінку для інтерпретації тексту, (як було зазначено колегами раніше - у Вас cp866) і задати її при читанні масиву байт або з потоку.

Варіанти перераховані вище. Ось тільки не Сonvert. а то отримаєте те ж саме, так-як Convert виробляє зіставлення, а не заміну символів.

Схожі статті