UTF16字符串到普通文本

时间:2015-01-08 10:21:50

标签: c# asp.net

我在DB中有一列包含UTF16字符串,我想将UTF16字符串转换为普通文本。
如何在c#中实现这一点?

例如:

Source : 0645 0631 062D 0628 0627 0020 0627 0644 0639 0627 0644 0645
Convert : مرحبا العالم

1 个答案:

答案 0 :(得分:1)

我认为source只是一个包含字节值的字符串,因为这是你的问题中不太清楚的一件事。

首先需要将其转换为字节数组。当然,您首先需要删除空白。

// Initialize the byte array
string sourceNoBlanks = source.Replace(" ", "").Trim();
if ((sourceNoBlanks.Length % 2) > 0)
    throw new ArgumentException("The length of the source string must be a multiple of 2!");

byte[] sourceBytes = new byte[source.Length / 2];

// Then, create the bytes
for (int i = 0; i < sourceBytes.Length; i++)
{
    string byteString = sourceNoBlanks.Substring(i*2, 2);
    sourceBytes[i] = Byte.Parse(byteString, NumberStyles.HexNumber);
}

之后,您可以轻松将其转换为字符串:

string result = Encoding.UTF32.GetString(sourceBytes);

我建议您阅读UTF32 encoding以了解小/大端编码。