Wie machen Stream.Schreiben () - Ausgabe in UTF-8-format
Mein Problem ist dieses:
Ich bin das generieren und hochladen der SQL Datei verwenden ASP.NET aber nach dem speichern der Datei auf dem FTP-server Zeichen wie ü, geändert werden zu &uul;, ø ø und so weiter... Wie kann ich das verhindern? Ich will nicht, dass die Datei formatiert werden mit dem ASCII-code, aber mit UTF-8.
Den code, der erzeugt und lädt die Datei sieht wie folgt aus:
//request = the object to be made an request out of.
Stream requestStream = request.GetReguestStream();
var encoding = new UTF8Encoding();
//fileContent is the string to be saved in the file
byte[] buffer = encoding.GetBytes(fileContent);
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Close();
Wie Sie sehen können, habe ich versucht, den System.Text.UTF8Encoding
, aber es funktioniert nicht.
- Upps, das zweite ø es soll einen & oslash; ohne die Leerzeichen.
- Der Fehler kann auf der empfangenden Seite...
- Es ist weit mehr wahrscheinlich, werden die FTP-Seite der Dinge, die dieses Problem verursachen, als es mit dem stream schreiben. Aber Sie haben nicht gezeigt, dass code.
- Oh, ich hatte gehofft, es war nicht, aber seine wahrscheinlich die ftp-Seite, die Schwierigkeiten verursacht dann. Vielen Dank 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denken Sie daran, mit streams kann man fast immer wickeln Sie die streams als notwendig. Wenn Sie möchten, schreiben UTF-8-codierte Inhalte wickeln Sie das Anfrage-stream in einem
StreamWriter
mit der richtigen Codierung:Da Sie sagen, Sie sind hochladen auf einen web-service werden Sie sicher, dass Sie Ihre content-encoding als gut. Da Sie noch nicht gepostet, wo die
request
Objekt stammt, nehme ich an, dass es eine normale HttpWebRequest.Mit einem HttpWebRequest würden Sie sagen dem server, was die Codierung von Inhalten ist durch die Verwendung der
ContentType
Eigenschaft.Wie andere erwähnt haben, obwohl der FTP-übertragung selbst sein kann, bricht es auch. Wenn Sie können, stellen Sie sicher, dass es übertragen im binary-Modus, nicht im ASCII-Modus.
Steckte es in debug und schauen, was wird im 'buffer' nach der Codierung.GetBytes() aufgerufen wird. Dieser wird überprüfen, ob es die rx-Seite, die es verursacht.