我在DB中有一列包含UTF16字符串,我想将UTF16字符串转换为普通文本。
如何在c#中实现这一点?
例如:
Source : 0645 0631 062D 0628 0627 0020 0627 0644 0639 0627 0644 0645
Convert : مرحبا العالم
答案 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以了解小/大端编码。