Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 13455 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
Python
gelöst Python mal utf-8 mal nicht (1)

Frage von peterpa zum Thema Python ...

Batch & Shell
gelöst Powershell: Mehrere Domains einlesen (9)

Frage von Agilolfinger zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

C und C++
String einlesen in Array und wieder ausgeben von hinten (4)

Frage von Protected zum Thema C und C ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Monitoring
Netzwerk-Monitoring Software (18)

Frage von Ghost108 zum Thema Monitoring ...

Windows 10
Windows 10 Fall Creators Update Fehler (13)

Frage von ZeroCool23 zum Thema Windows 10 ...

Router & Routing
gelöst Getrenntes Routing bei VoIP und Daten (12)

Frage von Hobbystern zum Thema Router & Routing ...