UTF-8としてエンコードされたxmlがあり、これをSQLServerのテキストフィールドに書き込みたいと思います。UTF-8はTextとバイト互換であるため、これを実行して、後でutf-8としてエンコードされたxmlを読み取ることができるはずです。
ただし、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バイト配列をstringに変更すると、特殊文字がUTF-16文字に変更され、その後、再びLatin1に変更されます。また、Latin1ÖÄÅはUTF-8ÖÄÅと同じではありません。
UTF-8 xmlバイトを変更せずにテキストフィールドに書き込むにはどうすればよいですか?