Как правильно конвертировать byte[] в строку (ASCII Рус. символы)?

157
27 апреля 2018, 11:31

Например следующий код должен возвращать строку "Г":

Encoding.ASCII.GetString((new byte[] { 195 })); 

Но почему возвращается строка: "?".

Как в C# правильно конвертировать массив байт в строку ASCII кодировки с рус. символами?

Answer 1

ASCII это только 7-бит - никаких значений выше 127. Кодировщик обычно декодирует неизвестные двоичные значения в ? (хотя это можно изменить с помощью Decoder Fallback).

Дальше, чтобы получить букву Г, укажите что вы хотите Кириллицу ( 1251) :

    public class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine(System.Text.Encoding.GetEncoding(1251).GetString((new byte[] { 195 })));
    }
}
Answer 2

Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от 0 (00000000), до 127 (01111111)

Альтернативная часть таблицы (русская). Вторая половина кодовой таблицы ASCII, называемая кодовой страницей (128 кодов, начиная с 10000000 и кончая 11111111), может иметь различные варианты, каждый вариант имеет свой номер. Кодовая страница в первую очередь используется для размещения национальных алфавитов, отличных от латинского. В русских национальных кодировках в этой части таблицы размещаются символы русского алфавита.

Следующий код работает, как нужно, если указана верная (для нас) локализация на машине:

byte[] Test = new byte[] { 195 };
Encoding.Default.GetString(Test);

Но! Использование Default - опасный способ. Сломается на машине, где в данный момент используется другая локализация.

READ ALSO
Адаптив для google adsense

Адаптив для google adsense

На сайте выводится реклама adsense, но на маленьких экранах от 320px часть рекламы скрытаПодскажите, как сделать адаптив для маленьких экранов?

188
Помощь с форматированием [требует правки]

Помощь с форматированием [требует правки]

Кто может отредактировать данный код по примеру? Ошибки прикрепил к сообщению https://prntsc/ja380w https://github

182
как расположить button по середине div? Angular material

как расположить button по середине div? Angular material

text-align не работает, я в верстке не особо понимаю, но пробовал разные способы из интернета - не помогло

162
Загрузить HTML код в переменную

Загрузить HTML код в переменную

Подскажите пожалуйста, как с помощью JavaScript можно получить HTML код любого веб-сайта по ссылке? И потом передать его в переменную или в *txt файл?

195