如何获得UTF-16字节数组?

时间:2013-09-09 12:13:04

标签: c# encoding

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

更新
我的意思是我们有Encoding.Unicode.GetBytes()甚至Encoding.UTF8.GetBytes()函数来获取字符串的字节数组,那么UTF-16呢?我们没有任何Encoding.UTF16.GetBytes()所以如何获得字节数组呢?

2 个答案:

答案 0 :(得分:22)

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

对于big-endian UTF-16,请使用Encoding.BigEndianUnicode

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

答案 1 :(得分:9)

  

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

不,不。那是不可能的。您可能拥有包含UTF-8编码文本的byte s序列(数组或流)。但不是string

<。> .net string始终包含Unicode(或更确切地说,UTF-16)。

  

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

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

图书馆定义范围 UTF7 UTF8 Unicode UTF32 。在.NET框架的上下文中,Unicode UTF16。