Преобразование int-->byte-->char || string - C#
Формулировка задачи:
Немного запутался... Прошу распутать.
Есть код, который сохраняет значения Int в файл.
это коды символов в UTF-8 (3 англ.символа, 3 русских символа)
Достаю из файла следующим образом:
Английские буквы/символы отображаются без проблем.
Русские буквы - символом ?, прочие символы отображаются всякими рогаликами.
пробовал менять исходную кодировку на ASCII, Unicode = не прокатило.
Пробовал делать так:
Тоже выводятся знаки вопроса и пр. рогалики
Как правильно произвести преобразование, чтобы русские символы отображались корректно?
73 83 72 208 184 186
string line; System.IO.StreamReader file = new System.IO.StreamReader("file.txt"); byte[] outpb = new byte[10]; while ((line = file.ReadLine()) != null) { int a = int.Parse(line); // делаю int byte str1 = (byte)a; // делаю byte char b2 = (char)str1; // делаю char }
int a = int.Parse(line); // получаю int byte str1 = (byte)a; // перевожу в byte for (int i = 0; i < line.Count(); i++ ) { outpb[i] = str1; // заталкиваю в массив byte[] } Console.WriteLine(Encoding.UTF8.GetString(outpb));
Полагаю, что ошибка кроется в самих кодировках, т.к. например русская буква И в UTF-8 имеет представление: 208 152, а моему скрипту на это до лампочки, т.к. он сохраняет 208 и 152 отдельно...
Решение задачи: «Преобразование int-->byte-->char || string»
textual
Листинг программы
using System; using System.Linq; using System.Text; namespace ConsoleApplication8 { public struct Program { private static void Main(string[] args) { string str = "qwertyuiopasdfghjklzxcvbnm йцукенгшщзхъфывапролджэячсмитьбю"; Console.WriteLine(str); int[] ints = Encoding.Unicode.GetBytes(str).Select(i => (int) i).ToArray(); string tmp=string.Join(" ",ints); Console.WriteLine(tmp); Console.WriteLine(); byte[] arr = tmp.Split(' ').Select(byte.Parse).ToArray(); Console.WriteLine(Encoding.Unicode.GetString(arr)); Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д