Ich habe meinem VS.NET 2008-Projekt eine SQL-Datei als eingebettete Ressource hinzugefügt. Wenn ich den folgenden Code zum Lesen des Inhalts der Datei verwende, beginnt die zurückgegebene Zeichenfolge immer mit drei überflüssigen Zeichen und dann mit dem erwarteten Text. Ich nehme an, das hat etwas mit dem Encoding.Default zu tun, den ich verwende, aber das ist nur eine Vermutung. Warum taucht dieser Text immer wieder auf? Sollte ich nur die ersten drei Buchstaben abschneiden oder gibt es einen informierteren Ansatz?Warum beginnt Text von Assembly.GetManifestResourceStream() mit drei Junk-Zeichen?
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);
}
}
Update: ich jetzt weiß, dass mein Code wie erwartet funktioniert, wenn ich einfach die letzte Zeile ändern, um eine UTF-8 kodierten String zurück. Es wird immer für diese eingebettete Datei gelten, aber wird es immer wahr sein? Gibt es eine Möglichkeit, einen Puffer zu testen, um seine Codierung zu bestimmen?
Gibt es eine Möglichkeit, die Codierung zu testen? Da ich beim Speichern der Datei keine Codierung angegeben habe, ging ich davon aus, dass es sich um die Standardeinstellung handelt. – flipdoubt
Die Standardcodierung in verschiedenen Editoren ist nicht identisch. –