2008-10-27 5 views

ответ

77

Вам нужно использовать кодировку, чтобы сообщить .NET, что вы ожидаете в качестве вывода. Например, в UTF-16:

var result = System.Text.Encoding.Unicode.GetBytes(text); 
+4

В System.Text.Encoding гораздо больше кодировок, чем только Unicode: убедитесь, что вы понимаете, какой из них вам нужен. – 2008-10-27 21:24:01

+1

Joel: следовательно Я написал «например». ;-) Но ваш комментарий, конечно, действителен. – 2008-10-27 21:27:03

7

Как это:

string test = "text"; 
    byte[] arr = Encoding.UTF8.GetBytes(test); 
14

Что Encoding вы используете? Konrad получил это в значительном степени вниз, но есть и другие, там и вы могли бы получить кретиничные результаты с неправильным:

byte[] bytes = System.Text.Encoding.XXX.GetBytes(text) 

Где XXX может быть:

ASCII 
BigEndianUnicode 
Default 
Unicode 
UTF32 
UTF7 
UTF8 
38

Первой работа из которой кодирующего вы хотите : сначала вы должны знать a bit about Unicode.

Следующая работа, которая System.Text.Encoding соответствует. Мой Core .NET refcard описывает большинство распространенных, и как получить экземпляр (например, с помощью статического имущества Encoding или путем вызова Encoding.GetEncoding.

Наконец, работать, хотите ли вы все байты сразу (что является самым простым способ работы - позвоните Encoding.GetBytes(string) один раз, и все будет готово), или вам нужно разбить его на куски - в этом случае вы захотите использовать Encoding.GetEncoder, а затем закодировать бит за раз. Кодер заботится о сохранении состояния между вызовами, в случае, если вам нужно, например, разбить половину пути через символ.