Wie stelle ich sicher, dass mein erstellter Datei-Download UTF-8 ist? (und nicht UTF-8 ohne BOM)

8

Ich habe eine Download-Funktion zum Herunterladen von Nachrichten in eine CSV-Datei (Code ist unten) gemacht. Jetzt, wenn ich es in Notizblock oder Notizblock öffne ++ sehe ich das:

NY ╬ ║ ░ ░ ░ <<

(und das ist, was in der Datenbank ist)

Nun, wenn ich es in Ms-Excel öffne, zeigt es folgendes:

É NY • ¬ â • â-- Wenn ich es in Notepad ++ öffne, heißt es, dass es in 'UTF8 ohne BOM' kodiert ist. Wenn ich es (in Notizblock ++) zu UTF-8 kodiere, geht alles gut (das heißt, Excel zeigt auch die richtigen Zeichen an)

Aber wie kann ich sicherstellen, dass die Datei, die ich aus meinem Code erstellt habe, UTF-8 ist?

Das ist mein Code:

%Vor%

Bearbeiten:

meine Funktion gibt jetzt ein ByteArray mit dieser Umwandlung zurück

%Vor%

und mein Download ist jetzt das:

%Vor%     
Michel 26.11.2010, 08:14
quelle

3 Antworten

3

Vielleicht möchten Sie versuchen, die Klasse UTF8Encoding zu verwenden. Der Konstruktor hat einen Parameter, der bestimmt, ob er die Stückliste bereitstellen soll oder nicht. Sie müssen wahrscheinlich die GetBytes-Methode verwenden und die Zeichenfolge als eine Folge von Bytes in die Antwort schreiben und nicht zurück in ein .net-String-Objekt konvertieren.

    
Zareth 26.11.2010, 08:26
quelle
19

Zareths Antwort half dem OP, aber es beantwortete die Frage nicht wirklich. Hier ist die richtige Lösung von diesem anderen Beitrag :

%Vor%

Die Byte-Reihenfolge-Markierung (die technisch für UTF8 nicht erforderlich ist) weist auf bestimmte Programme (z. B. Excel & gt; 2007) hin, die darauf hinweisen, dass Sie UTF8 verwenden. Sie müssen es manuell über die Methode GetPreamble() einfügen.

    
StriplingWarrior 09.07.2012 16:32
quelle
1

Sie könnten Ihren Code etwas vereinfachen:

%Vor%

Soweit es die UTF-8-Kodierung betrifft, befürchte ich, dass das Problem in dieser GetPersonalMessages -Methode liegt. Möglicherweise müssen Sie einen Stream oder ein Byte-Array zurückgeben, die Sie direkt als Datei zurückgeben könnten.

    
Darin Dimitrov 26.11.2010 08:19
quelle