У меня есть некоторый xml, закодированный как UTF-8, и я хочу записать это в текстовое поле в SQL Server. UTF-8 является байтово-совместимым с текстом, поэтому он должен быть в состоянии сделать это, а затем прочитать xml, все еще закодированный как utf-8.
Однако специальные символы, такие как ÄÅÖ, которые являются многобайтовыми в UTF-8, изменяются в пути.
У меня есть такой код:
byte[] myXML = ...
SqlCommand _MyCommand = new SqlCommand(storeProcedureName, pmiDB.GetADOConnection());
_MyCommand.CommandType = CommandType.StoredProcedure;
_MyCommand.Parameters.Add("xmlText", SqlDbType.Text);
_MyCommand.Parameters["xmlText"].Value = Encoding.UTF8.GetString(myXML);
_MyCommand.ExecuteNonQuery();
Я предполагаю, что при изменении байтового массива xml на строку специальные символы заменяются на символы UTF-16, которые затем снова заменяются на Latin1. И Latin1 ÖÄÅ - это не то же самое, что UTF-8 ÖÄÅ.
Как записать XML-байты UTF-8 в текстовое поле без их изменения?