support big endian and little endian utf 16 in string tokens #32

This commit is contained in:
Eliot Jones
2019-06-05 18:02:24 +01:00
parent f375cb6f04
commit 39d05e6a47
2 changed files with 42 additions and 2 deletions

View File

@@ -146,7 +146,32 @@
}
}
token = new StringToken(builder.ToString());
string tokenStr;
if (builder.Length >= 2)
{
if (builder[0] == 0xFE && builder[1] == 0xFF)
{
var rawBytes = OtherEncodings.StringAsLatin1Bytes(builder.ToString());
tokenStr = Encoding.BigEndianUnicode.GetString(rawBytes);
}
else if (builder[0] == 0xFF && builder[1] == 0xFE)
{
var rawBytes = OtherEncodings.StringAsLatin1Bytes(builder.ToString());
tokenStr = Encoding.Unicode.GetString(rawBytes);
}
else
{
tokenStr = builder.ToString();
}
}
else
{
tokenStr = builder.ToString();
}
token = new StringToken(tokenStr);
return true;
}