Warum mit ADODB.Stream mit ASCII-Zeichensatz Sonderzeichen wie ä konvertiert?
Ich bin ein problem zu versuchen, um die Ausgabe der Inhalte von Variablen in vb6 in einem text-file. Die Sache ist, dass, wenn Sie ein Sonderzeichen aus dem erweiterten ASCII-erscheint als ä, ü, á, verwandelt es sich in die Ausgabe an den entsprechenden Standard-ASCII-char wie a, u, a.
Ich habe versucht zu exportieren, wie es UTF-8 ist, dann wird der Charakter richtig angezeigt, aber ich brauche die Ausgabe in ASCII-Format. Auch, sieht seltsam für mich, dass der Dateiname können enthalten in der Regel diese Zeichen (ä, ü, á,...) ohne sustitution.
Kann das sein, weil "ASCII" - Zeichensatz ist nur die basic und nicht die extended? Vielleicht, weil die CodePages in Windows konfiguriert? Ich habe versucht, mit ein paar von Ihnen (Deutsch, Englisch) mit dem gleichen Ergebnis.
Dies ist der code den ich verwende:
Set fileStream = New ADODB.Stream
If Not fileStream Is Nothing Then
inputString = textPreAppend + inputString
fileStream.charSet = "ASCII"
fileStream.Open
fileStream.WriteText inputString
fileStream.Flush
fileStream.SaveToFile fileName, adSaveCreateOverWrite
fileStream.Flush
fileStream.Close
End If
Set fileStream = Nothing
Vielen Dank im Voraus!
- Für Referenz, "ascii" in diesem Fall bezieht sich auf iso8859-1/codepage 1252.
- Gut zu wissen, Deanna, ich glaube, ich kann schon verwirrend Zeichensätze. Ich habe gerade einen test und ich habe deaktiviert die Zeichensatz-20127 (UNS-ASCII), dass ich denke, dass ist Standard-ASCII, und dann wird die Ausgabe-Datei ist komplett leer. Ich denke, das beweist, ich bin mit dem Standard-ASCII-statt des erweiterten eine (1252), aber diese codepage ausgewählt ist, die in den regionalen Einstellungen. Vielleicht habe ich es zu zwingen in dem code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide PRB: Charset-Eigenschaft des ADO-Stream-Objekt Kann, muss der Microsoft Internet Explorer-Update und Charset-Eigenschaft (ADO) vorschlagen, dass ADO-CharSet-Werte sind aufgelistet unter
HKEY_CLASSES_ROOT\MIME\Database\Charset
aber das ist offenbar nicht die ganze Geschichte.Beispielsweise beide Werte "ascii" und "us-ascii" sind die dort aufgeführten als alias von "iso-8859-1" jedoch läuft mit meinen Gebietsschema auf Englisch (USA handeln Sie wie ein 7-bit-ASCII MIME-Typ. Sie würden fast haben, da es nichts anderes gibt, sofern für die Anforderung von 7-bit-ASCII-Kodierung sowieso.
Dadurch entsteht das Ergebnis, das Sie zu wollen scheinen:
Ausgabe:
Müssen wir davon ausgehen, dass Sie aufgefordert werden für "ascii" (die Werte sind alle klein geschrieben, obwohl klar sind nicht case-sensitive) bedeutet, dass 7-bit ASCII, vielleicht lokalisiert.
UTF-8 ist eine schlechte Idee, es sei denn, Sie wollen UTF-8. Während viele *nix-Systeme, die vorgeben, es gäbe keinen Unterschied, der Strom schreiben Sie eine Stückliste und natürlich die extended (non-ASCII) multibyte-Zeichen werden codiert.
Warum kann man nicht einfach etwas tun, wie die folgenden? Dies funktioniert ok für mich: