Klassischer ASP, VBScript-Kontext.
Eine Menge von Artikeln einschließlich dieses Microsoft , sagen Sie kann nicht FileSystemObject verwenden, um Unicode-Dateien zu lesen.
Ich habe dieses Problem vor einiger Zeit bemerkt, also habe ich stattdessen auf ADODB.Stream umgestellt, im ReadText Beispiel hier , anstatt FileSystemObject.OpenTextFile ( die einen letzten Parameter akzeptiert, der angibt, ob die Datei als Unicode geöffnet werden soll, aber nicht funktioniert.)
Allerdings führt ADODB.Stream zu einer schmerzhaften Situation, wenn Sie versuchen, eine Datei in einer UNC-Dateifreigabe zu lesen (Probleme mit Berechtigungen). Als ich dies untersuchte, stolperte ich über den folgenden Ansatz, der a) mit Unicode-Dateien und b) über UNC-Fileshares hinweg funktioniert:
%Vor%Das verwendet das FSO, um eine Unicode-Datei ohne irgendein offensichtliches Problem zu lesen, deshalb bin ich bezüglich aller Verweise einschließlich MS verwirrt, sagend, dass Sie das FSO nicht verwenden können, um Unicode-Dateien zu lesen.
Hat jemand anderes diesen Ansatz zum Lesen von Unicode-Dateien verwendet? Gibt es irgendwelche verborgenen Fehler, die ich vermisse, oder können Sie wirklich Unicode-Dateien mit FSO lesen?
Ja, diese Dokumentation ist veraltet. Die Scripting-Komponente hat in den frühen Tagen eine Reihe von Änderungen durchlaufen (einige von ihnen haben die Änderungen bei früher Bindung aufgehoben), aber seit mindestens WK2000 SP4 und XP SP2 war es sehr stabil.
Sei einfach vorsichtig, was du mit Unicode meinst. Manchmal wird das Wort Unicode breiter verwendet und kann jede Unicode-Codierung abdecken. FSO liest beispielsweise nicht UTF8-Unicode-Kodierungen. Dafür müssten Sie auf ADODB.Stream zurückgreifen.
Ich glaube, MS gibt offiziell nicht an, dass es Unicode unterstützt, weil:
Hier ist ein Beispielcode, den ich erfolgreich (für ein paar Jahre) verwendet habe, um Unicode-Dateien mit FSO automatisch zu erkennen und zu lesen (vorausgesetzt, sie sind Little-Endian und enthalten die BOM):
%Vor%Ich würde sagen, wenn es funktioniert, benutze es; -)
Ich bemerke, dass der MS Artikel, auf den Sie verweisen, aus dem Windows 2000 (!) Scripting Guide stammt. Vielleicht ist es veraltet.
Ich schreibe ein Windows 7-Gadget und führe das gleiche Problem ein, und wenn es möglich ist, kannst du deine Dateien einfach in eine andere Kodierung umwandeln, zum Beispiel: ANSI-Kodierung "windows-1251". Mit dieser Codierung funktioniert es gut.
Wenn Sie dies zum Schreiben einer Site verwenden, ist es besser, einen anderen Entwicklungsansatz zu verwenden, der diese Objekte vermeidet.
Tags und Links scripting vbscript asp-classic