Может кто-нибудь объяснить мне Encoding.Unicode.GetBytes ("привет") - PullRequest
2 голосов
/ 11 ноября 2008

Мой код:

        string input1;

        input1 = Console.ReadLine();

        Console.WriteLine("byte output");

        byte[] bInput1 = Encoding.Unicode.GetBytes(input1);


        for (int x = 0; x < bInput1.Length; x++)
            Console.WriteLine("{0} = {1}", x, bInput1[x]);

выходы:

104 0 101 0 108 0 108 0 111 0

для ввода "привет"

Есть ли ссылка на карту персонажей, где я могу это понять?

Ответы [ 2 ]

9 голосов
/ 11 ноября 2008

Вы должны прочитать «Абсолютный минимум, который должен знать каждый разработчик программного обеспечения, абсолютно, обязательно должен знать о юникоде и наборах символов (никаких оправданий!)» В http://www.joelonsoftware.com/articles/Unicode.html

Вы можете найти список всех символов Юникода в http://www.unicode.org, но не ожидайте, что сможете прочитать файлы там, не узнав много о проблемах кодирования текста.

2 голосов
/ 11 ноября 2008

В http://www.unicode.org/charts/ вы можете найти все диаграммы кодов Unicode. http://www.unicode.org/charts/PDF/U0000.pdf показывает, что кодовая точка для 'h' - это U + 0068. (Еще один замечательный инструмент для просмотра этих данных - BabelMap .)

Точные детали кодирования UTF-16 можно найти в http://unicode.org/faq/utf_bom.html#6 и http://www.ietf.org/rfc/rfc2781.txt. Короче, U + 0068 кодируется (в UTF-16LE) как 0x68 0x00. В десятичном виде это первые два байта, которые вы видите: 104 0.

Другие символы кодируются аналогично.

Наконец, отличным справочником (при попытке понять различные спецификации Unicode), помимо самого стандарта Unicode , является Глоссарий Unicode .

...