У меня есть файл SQL, добавленный в мой проект VS.NET 2008 как встроенный ресурс. Всякий раз, когда я использую следующий код для чтения содержимого файла, возвращаемая строка всегда начинается с трех ненужных символов, а затем с ожидаемым текстом. Я предполагаю, что это как-то связано с Encoding.Default, который я использую, но это всего лишь предположение. Почему этот текст продолжает появляться? Должен ли я просто обрезать первые три символа или есть более информированный подход?
public string GetUpdateRestoreSchemaScript()
{
var type = GetType();
var a = Assembly.GetAssembly(type);
var script = "UpdateRestoreSchema.sql";
var resourceName = String.Concat(type.Namespace, ".", script);
using(Stream stream = a.GetManifestResourceStream(resourceName))
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
// UPDATE: Should be Encoding.UTF8
return Encoding.Default.GetString(buffer);
}
}
Обновление:
Теперь я знаю, что мой код работает должным образом, если я просто изменяю последнюю строку, чтобы вернуть строку в кодировке UTF-8. Это всегда будет верно для этого встроенного файла, но всегда ли это будет верно? Есть ли способ проверить любой буфер, чтобы определить его кодировку?