Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

UTF-8-Textdatei mit VBS einlesen

Frage Entwicklung VB for Applications

Mitglied: n4426

n4426 (Level 2) - Jetzt verbinden

13.12.2010, aktualisiert 18.10.2012, 13004 Aufrufe, 10 Kommentare

Hallo zusammen,

ich versuch heute schon den ganzen Tag ein UTF-8 Formatierte Textdatei mit VBS einzulesen.

Das funktioniert auch soweit, bis auf Sonderzeichen wie z.B. ß, ä, ö ü ... Ich hab leider nichts gefunden, was funktioniert hat um eine UTF-8-Datei mit VBS zu verarbeiten.

Hier mein VBS-Code.

01.
file = "textdatei.txt" 
02.
 
03.
dim Ausgabe, varText, varAusgabeListe 
04.
Set wshShell = WScript.CreateObject( "WScript.Shell" ) 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
 
08.
If fso.FileExists(file) Then 
09.
Set fi = fso.OpenTextFile(file) 
10.
 
11.
Do While Not (fi.atEndOfStream) 
12.
	varText = fi.Readline 
13.
 
14.
	Ausgabe = split(varText, vbTab) 
15.
	 
16.
	msgbox Ausgabe(3)  
17.
 
18.
Loop 
19.
 
20.
End if
Hat da einer von euch vieleicht eine Idee/Lösung für mich?

Vielen Dank im voraus.

mfg
n4426
Mitglied: MrTrebron
13.12.2010 um 15:57 Uhr
Hi n4426

also was ich dir schon mal sagen kann, das du nicht einfach nur die Textdatei angeben kannst, sondern auch den Pfad zur Datei setzen musst.

Zudem wäre es hilfreich wenn du deine Fehlermeldung mit postest.

Gruß
Norbert
Bitte warten ..
Mitglied: bastla
13.12.2010 um 16:02 Uhr
Hallo n4426!

Hast Du es schon mit
Set fi = fso.OpenTextFile(file, 1, False, True)
versucht?

Grüße
bastla
Bitte warten ..
Mitglied: n4426
13.12.2010 um 16:30 Uhr
Hallo,

@norbert: Hab den Pfad nur hier im Posting weggelassen.

Das Problem besteht eigentlich nur darin, das die Sonderzeichen falsch ausgegeben werden (soll hier z.B. ein ß sein).

b660a8e05ba8564b7ae841f97648aa93 - Klicke auf das Bild, um es zu vergrößern


@bastla: ja, hab ich, da kommt das hier raus .

ac7cea6d782a4abb674809d4115d150c - Klicke auf das Bild, um es zu vergrößern

mfg
n4426
Bitte warten ..
Mitglied: bastla
13.12.2010, aktualisiert 18.10.2012
Hallo n4426!

Stimmt - ich seh' da auch kein einziges ß, ä, ö oder ü (sieht ansonsten aber nicht uninteressant aus) ...

[Edit] Das hat jetzt aber gedauert, bis ich diesen Beitrag (bzw sogar jenen ) gefunden habe ... [/Edit]
[Edit2] Sollte sich mit Dieters Kurzfassung unten erledigt haben ... [/Edit2]

Grüße
bastla
Bitte warten ..
Mitglied: 76109
13.12.2010 um 17:10 Uhr
Hallo n4426!

Versuchs mal so:
01.
Const UTF8Path = "E:\Test\UTF8.txt" 
02.
 
03.
Const adTypeText = 2 
04.
 
05.
Dim UTF8Stream, Text 
06.
     
07.
Set UTF8Stream = CreateObject("ADODB.Stream") 
08.
         
09.
With UTF8Stream 
10.
    .Type = adTypeText 
11.
    .Charset = "UTF-8" 
12.
    .Open 
13.
    .LoadFromFile UTF8Path 
14.
     Text = .ReadText 
15.
    .Close 
16.
End With
Gruß Dieter
Bitte warten ..
Mitglied: n4426
13.12.2010 um 17:36 Uhr
Hallo Dieter,

das Sonderzeichen werden jetzt richtig ausgegeben. Danke.

Allerdings wird jetzt das ganze Textfile in einem rutsch eingelesen. Ich brauchs aber Zeile für Zeile und dann die Zeile wieder am TabStop Trennen, damit ich das ganze weiter verarbeiten kann.

Hast du da was zur hand?

mfg
n4426
Bitte warten ..
Mitglied: bastla
13.12.2010 um 17:46 Uhr
Hallo n4426!

Wenn Du alles in der Variablen "Text" hast, kannst Du ja diese zeilenweise splitten:
01.
For Each varText In Split(Text, vbCrLf) 
02.
    MsgBox Split(varText, vbTab)(3) 
03.
Next
Grüße
bastla
Bitte warten ..
Mitglied: n4426
13.12.2010 um 18:02 Uhr
Hallo Bastla,

danke funktioniert fast einwandfrei. Jetzt ist nur noch das Problem, das nach der letzte Zeile der UTF-8-Datei nicht verarbeitet werden kann/darf, da diese eine leerzeile ist (da schmiert das Script ab). Kann man das noch abfangen?

mfg
n4426
Bitte warten ..
Mitglied: bastla
13.12.2010 um 18:07 Uhr
Hallo n4426!

Entweder direkt abfragen:
If Trim(varText) <> "" Then MsgBox Split(varText, vbTab)(3)
bzw
01.
arrText = Split(varText, vbTab) 
02.
If UBound(arrText) >= 3 Then MsgBox arrText(3)
oder, wenn Du immer die letzte Zeile weg lassen willst:
01.
arrLines = Split(Text, vbCrLf) 
02.
For i = 0 To UBound(arrLines)-1 
03.
    MsgBox Split(arrLines(i), vbTab)(3) 
04.
Next
[Edit] Variablenname auf "arrLines" geändert [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: n4426
13.12.2010 um 18:13 Uhr
Super.
Vielen Dank an Bastla und Dieter.

Ich werds warscheinlich die erste Variante mit dem Direkten abfragen nehmen, dann dürfte es auch gehen, wenn mal zwischendrin eine Zeile leer sein sollte.

mfg
n4426
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

VB for Applications
gelöst Wo ist der Fehler in diesem VBS Codeausschnitt? (2)

Frage von gabrixl zum Thema VB for Applications ...

Batch & Shell
Spoiler in textdatei automatisch über Powershellscript einfügen (5)

Frage von Dr.Byte zum Thema Batch & Shell ...

VB for Applications
gelöst Tool zur scriptbasierten PDF-Bearbeitung gesucht (VBS oder Batch) (6)

Frage von SarekHL zum Thema VB for Applications ...

Neue Wissensbeiträge
Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von Pedant zum Thema Batch & Shell ...

Microsoft

Restrictor: Profi-Schutz für jedes Window

(6)

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
gelöst Benutzer lässt sich nur an einem Clientcomputer anmelden (17)

Frage von Ammann zum Thema Windows Server ...

Vmware
gelöst Wie würdet Ihr eine ESXi Cluster Farm managen? (11)

Frage von AlFalcone zum Thema Vmware ...

Batch & Shell
gelöst Gruppenzugehörigkeit von AD Usern ermitteln - die Perfektion fehlt (11)

Frage von Stefan007 zum Thema Batch & Shell ...