Если у вас есть C # string
, чье содержимое неправильно интерпретируется как кодированное в UTF-16, вы можете переосмыслить базовые байты:
public static string InterpretAsUTF8(string value)
{
byte[] rawData = Encoding.Default.GetBytes(value);
string reencoded = Encoding.UTF8.GetString(rawData);
return reencoded;
}
Однако, если у вас есть доступ к SqlDataReader
, тогда, как предложено @ CarlSteffen , вы можете сделать это:
//Assuming the column index you're interested in is 1:
SqlString utf8EncodedString = reader.GetSqlString(1);
string expectedResult = Encoding.UTF8.GetString(utf8EncodedString.GetNonUnicodeBytes());