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)}";