C#中的Unicode到字符串转换

如何将Unicode值转换为其等效字符串?

例如,我有“మెశమెశ”,我需要一个接受此Unicode值并返回一个字符串的函数。

我正在查看System.Text.Encoding.Convert()函数,但不接受Unicode值; 它需要两个编码和一个字节数组。

我基本上有一个字节数组,我需要保存在字符串字段中,然后稍后返回并将字符串转换回字节数组。

所以我使用ByteConverter.GetString(byteArray)将字节数组保存到字符串中,但我无法将其恢复为字节数组。

请尝试以下方法:

 byte[] bytes = ...; string convertedUtf8 = Encoding.UTF8.GetString(bytes); string convertedUtf16 = Encoding.Unicode.GetString(bytes); // For UTF-16 

另一种方法是使用`GetBytes():

 byte[] bytesUtf8 = Encoding.UTF8.GetBytes(convertedUtf8); byte[] bytesUtf16 = Encoding.Unicode.GetBytes(convertedUtf16); 

Encoding类中,如果需要,还有更多变体。

使用.ToString();

 this.Text = ((char)0x00D7).ToString(); 

要将字符串转换为Unicode字符串,请执行以下操作:非常简单…请注意BytesToString函数,它可以避免使用任何内置的转换内容。 也快。

 private string BytesToString(byte[] Bytes) { MemoryStream MS = new MemoryStream(Bytes); StreamReader SR = new StreamReader(MS); string S = SR.ReadToEnd(); SR.Close(); return S; } private string ToUnicode(string S) { return BytesToString(new UnicodeEncoding().GetBytes(S)); } 

UTF8Encoding

  UTF8Encoding uni = new UTF8Encoding(); Console.WriteLine( uni.GetString(new byte[] { 1, 2 })); 

有不同类型的编码。 您可以尝试其中一些来查看您的字节流是否正确转换:

 System.Text.ASCIIEncoding encodingASCII = new System.Text.ASCIIEncoding(); System.Text.UTF8Encoding encodingUTF8 = new System.Text.UTF8Encoding(); System.Text.UnicodeEncoding encodingUNICODE = new System.Text.UnicodeEncoding(); var ascii = string.Format("{0}: {1}", encodingASCII.ToString(), encodingASCII.GetString(textBytesASCII)); var utf = string.Format("{0}: {1}", encodingUTF8.ToString(), encodingUTF8.GetString(textBytesUTF8)); var unicode = string.Format("{0}: {1}", encodingUNICODE.ToString(), encodingUNICODE.GetString(textBytesCyrillic)); 

看看这里: http : //george2giga.com/2010/10/08/c-text-encoding-and-transcoding/ 。

 var ascii = $"{new ASCIIEncoding().ToString()}: {((ASCIIEncoding)new ASCIIEncoding()).GetString(textBytesASCII)}"; var utf = $"{new UTF8Encoding().ToString()}: {((UTF8Encoding)new UTF8Encoding()).GetString(textBytesUTF8)}"; var unicode = $"{new UnicodeEncoding().ToString()}: {((UnicodeEncoding)new UnicodeEncoding()).GetString(textBytesCyrillic)}";