Tôi có một tệp SQL được thêm vào dự án VS.NET 2008 của tôi dưới dạng tài nguyên được nhúng. Bất cứ khi nào tôi sử dụng đoạn mã sau để đọc nội dung của tệp, chuỗi trả về luôn bắt đầu bằng ba ký tự rác và sau đó là văn bản tôi mong đợi. Tôi cho rằng điều này có liên quan đến Encoding.Default mà tôi đang sử dụng, nhưng đó chỉ là phỏng đoán. Tại sao văn bản này tiếp tục hiển thị? Tôi có nên cắt bớt ba ký tự đầu tiên hoặc có cách tiếp cận thông tin hơn không?Tại sao văn bản từ Assembly.GetManifestResourceStream() bắt đầu bằng ba ký tự rác?
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);
}
}
Cập nhật: bây giờ tôi biết rằng mã của tôi làm việc như mong đợi nếu tôi chỉ đơn giản là thay đổi dòng cuối cùng để trả lại một UTF-8 chuỗi mã hóa. Nó sẽ luôn luôn đúng cho tập tin nhúng này, nhưng nó sẽ luôn luôn đúng? Có cách nào để kiểm tra bất kỳ bộ đệm để xác định mã hóa của nó?
Có cách nào để kiểm tra mã hóa không? Vì tôi không chỉ định mã hóa khi tôi lưu tệp, tôi cho rằng đó là mặc định. – flipdoubt
Mã hóa mặc định trong các trình chỉnh sửa khác nhau không giống nhau. –