перед текстом 'en' * стоит какой-то символ
Это искусственная спецификация, результат кодирования символа U + FEFF BYTE ORDER MARK в UTF-8.
Поскольку UTF-8 является кодировкой, у которой нет порядка следования байтов, faux-BOM никогда не следует использовать, но, к сожалению, довольно много существующего программного обеспечения (особенно в мире MS), тем не менее.Загрузите файл сообщений в текстовый редактор и снова сохраните его как UTF-8, используя кодировку «UTF-8 без BOM», если он указан в списке.
ru: нР° именьший
Это то, что вы получаете, когда получаете байтовую строку UTF-8 (представляющую наименьший
), и вы печатаете ее, как если бы она была кодовой страницей 1252 (Windows Western European)строка байтов.Это не проблема ввода;Вы прочитали строку OK и получили строку байтов UTF-8.Но затем, в коде, который вы не указали, он выводится как cp1252.
Если вы просто печатаете его на консоль, этого следует ожидать, так как консоль всегда использует системную кодовую страницу по умолчанию(1252 на западной установке Windows), а не UTF-8.Если вам нужно отправить Unicode на консоль, вам придется преобразовать байты в native-Unicode wchar
s и записать их оттуда.Я не знаю, каким будет конечный пункт назначения для ваших строк ... если вы просто собираетесь записать их в другой файл или что-то еще, вы можете просто сохранить их в байтах и не заботиться о том, в какой кодировке они находятся.