20

我有一个UTF-8字符串,我需要获取UTF-16编码的字节数组,那么如何将我的字符串转换为UTF-16字节数组?

更新:
我的意思是我们有Encoding.Unicode.GetBytes()Encoding.UTF8.GetBytes()至函数来获取字符串的字节数组,那UTF-16呢?我们没有,Encoding.UTF16.GetBytes()所以我怎样才能得到字节数组?

4

2 回答 2

31

对于 little-endian UTF-16,请使用Encoding.Unicode.

对于大端 UTF-16,请使用Encoding.BigEndianUnicode.

或者,构造一个显式实例UnicodeEncoding,允许您指定字节顺序、是否包含字节顺序标记以及是否在无效数据上引发异常。

于 2013-09-09T12:25:00.980 回答
11

我有一个 UTF-8 字符串和...

不,你没有。那是不可能的。您可能有一个包含byteUTF-8 编码文本的 s 序列(数组或流)。但不是一个string

.netstring始终包含 Unicode(或更准确地说,UTF-16)。

...,那么如何将我的字符串转换为 UTF-16 字节数组?

string myText = ...;  // some string, maybe from an UTF8 file or any other source
byte[] utf16Data = Encoding.Unicode.GetBytes(mytext);

该库定义了范围UTF7UTF8UnicodeUTF32。Unicode.NET 框架上下文中的 UTF16。

于 2013-09-09T12:18:01.793 回答