Преобразование 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();
}
}
}