Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Textdateien von UTF-8 nach Ansi konvertieren?

Textdateien von UTF-8 nach Ansi konvertieren?
18.10.2007 15:34:46
UTF-8
Hallo Leute,
wie kann ich Textdateien (ca. 8000) am einfachsten von UTF-8 nach Ansi konvertieren?
Geht das evtl. per VBA ?
Vielen Dank im Voraus !
Liebe Grüße
Selma

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdateien von UTF-8 nach Ansi konvertieren?
18.10.2007 15:46:00
UTF-8
Hallo Selma,
unter Google: UTF-8 site:herber.de findest du einige Anregungen.
Vielleicht hilft dir das schon weiter.
Gruß Peter

AW: Textdateien von UTF-8 nach Ansi konvertieren?
18.10.2007 20:59:17
UTF-8
Hallo Peter,
danke für die Links. Leider habe nichts passendes gefunden, außer dies hier: http://www.activevb.de/rubriken/faq/faq0155.html
Lieder weiß ich nicht, wie ich dies in VBA anpassen muss.
Könntest Du mir bitte helfen?
Danke im Voraus !
LG
Selma

Anzeige
AW: Textdateien von UTF-8 nach Ansi konvertieren?
18.10.2007 21:47:38
UTF-8
Hallo Selma,
hier ist mein Test - Makro "Test_der_Functions"


Option Explicit
Private Declare Function WideCharToMultiByte Lib "kernel32.dll" ( _
                         ByVal CodePage As Long, _
                         ByVal dwFlags As Long, _
                         ByVal lpWideCharStr As Long, _
                         ByVal cchWideChar As Long, _
                         ByVal lpMultiByteStr As Long, _
                         ByVal cbMultiByte As Long, _
                         ByVal lpDefaultChar As Long, _
                         ByVal lpUsedDefaultChar As LongAs Long
Private Declare Function MultiByteToWideChar Lib "kernel32.dll" ( _
                         ByVal CodePage As Long, _
                         ByVal dwFlags As Long, _
                         ByVal lpMultiByteStr As Long, _
                         ByVal cbMultiByte As Long, _
                         ByVal lpWideCharStr As Long, _
                         ByVal cchWideChar As LongAs Long
Private Const CP_UTF8 As Long = 65001
Private Function ConvertToUTF8(ByRef Source As StringAs Byte()
    Dim Length As Long
    Dim Pointer As Long
    Dim Size As Long
    Dim Buffer() As Byte
    Length = Len(Source)
    Pointer = StrPtr(Source)
    Size = WideCharToMultiByte(CP_UTF8, 0, Pointer, Length, 0, 0, 0, 0)
    ReDim Buffer(0 To Size - 1)
    WideCharToMultiByte CP_UTF8, 0, Pointer, Length, VarPtr(Buffer(0)), _
        Size, 0, 0
    ConvertToUTF8 = Buffer
End Function
Private Function ConvertFromUTF8(ByRef Source() As ByteAs String
    Dim Size As Long
    Dim Pointer As Long
    Dim Length As Long
    Dim Buffer As String
    Size = UBound(Source) - LBound(Source) + 1
    Pointer = VarPtr(Source(LBound(Source)))
    Length = MultiByteToWideChar(CP_UTF8, 0, Pointer, Size, 0, 0)
    Buffer = Space$(Length)
    MultiByteToWideChar CP_UTF8, 0, Pointer, Size, StrPtr(Buffer), Length
    ConvertFromUTF8 = Buffer
End Function
Public Sub Test_der_Functions()
Dim Eingabe  As String: Eingabe = "ändern möchte man es müssen"
Dim Ausgabe  As Variant
Dim sText    As String
Dim iIndx    As Integer
Dim sTmp()   As Byte
   Ausgabe = ConvertToUTF8(Eingabe) ' den Text in UTF8 konvertieren
   For iIndx = 0 To UBound(Ausgabe)
      sText = sText & Ausgabe(iIndx) & Chr(9) & Chr(Ausgabe(iIndx)) & Chr(10)
      ReDim Preserve sTmp(iIndx)
      sTmp(iIndx) = Ausgabe(iIndx)  ' den konvertierten Text in ein Array speichern
   Next iIndx
   MsgBox sText                     ' den konvertierten Text anzeigen
   Eingabe = ConvertFromUTF8(sTmp)  ' das Array wieder zurückkonvertieren
   MsgBox Eingabe                   ' das zurückkonvertierte Array anzeigen
End Sub


Gruß Peter

Anzeige
AW: Textdateien von UTF-8 nach Ansi konvertieren?
18.10.2007 16:02:48
UTF-8
Auch Hallo,
am einfachsten M.E. auf der Kommandozeile mit ICONV.
http://gnuwin32.sourceforge.net/packages/libiconv.htm
ungetestet: iconv -f utf-8 -t windows-1252 utf8.txt > ansi.txt
cu, Bernd

AW: Textdateien von UTF-8 nach Ansi konvertieren?
18.10.2007 21:01:00
UTF-8
Hallo Bernd,
das habe ich gestern gefunden und ausprobiert. Leider sind einige Dateien nach der Konvertierung inhaltlich unvollständig.
LG
Selma

Anzeige
AW: Textdateien von UTF-8 nach Ansi konvertieren?
18.10.2007 21:17:54
UTF-8
Abend Selma,
schicke mal so eine Datei her.
cu, Bernd

AW: Textdateien von UTF-8 nach Ansi konvertieren?
20.10.2007 14:49:00
UTF-8
Hallo Bernd,
das war meine Fehler. Einige Urspungsdateien (UTF-8) waren vor der Konvertierung nicht vollständig.
Danke Dir und Peter für die Hilfe !
LG
Selma
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Textdateien von UTF-8 nach Ansi konvertieren


Schritt-für-Schritt-Anleitung

Um eine Textdatei von UTF-8 in Ansi umzuwandeln, kannst Du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem Du im Menü auf Einfügen > Modul klickst.

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    
    Private Declare Function WideCharToMultiByte Lib "kernel32.dll" ( _
        ByVal CodePage As Long, _
        ByVal dwFlags As Long, _
        ByVal lpWideCharStr As Long, _
        ByVal cchWideChar As Long, _
        ByVal lpMultiByteStr As Long, _
        ByVal cbMultiByte As Long, _
        ByVal lpDefaultChar As Long, _
        ByRef lpUsedDefaultChar As Long) As Long
    
    Private Declare Function MultiByteToWideChar Lib "kernel32.dll" ( _
        ByVal CodePage As Long, _
        ByVal dwFlags As Long, _
        ByVal lpMultiByteStr As Long, _
        ByVal cbMultiByte As Long, _
        ByVal lpWideCharStr As Long, _
        ByVal cchWideChar As Long) As Long
    
    Private Const CP_UTF8 As Long = 65001
    
    Private Function ConvertToUTF8(ByRef Source As String) As Byte()
        Dim Length As Long
        Dim Pointer As Long
        Dim Size As Long
        Dim Buffer() As Byte
        Length = Len(Source)
        Pointer = StrPtr(Source)
        Size = WideCharToMultiByte(CP_UTF8, 0, Pointer, Length, 0, 0, 0, 0)
        ReDim Buffer(0 To Size - 1)
        WideCharToMultiByte CP_UTF8, 0, Pointer, Length, VarPtr(Buffer(0)), Size, 0, 0
        ConvertToUTF8 = Buffer
    End Function
    
    Private Function ConvertFromUTF8(ByRef Source() As Byte) As String
        Dim Size As Long
        Dim Pointer As Long
        Dim Length As Long
        Dim Buffer As String
        Size = UBound(Source) - LBound(Source) + 1
        Pointer = VarPtr(Source(LBound(Source)))
        Length = MultiByteToWideChar(CP_UTF8, 0, Pointer, Size, 0, 0)
        Buffer = Space$(Length)
        MultiByteToWideChar CP_UTF8, 0, Pointer, Size, StrPtr(Buffer), Length
        ConvertFromUTF8 = Buffer
    End Function
    
    Public Sub Test_der_Functions()
        Dim Eingabe As String: Eingabe = "Text für die Konvertierung"
        Dim Ausgabe As Variant
        Dim sText As String
        Dim iIndx As Integer
        Dim sTmp() As Byte
    
        Ausgabe = ConvertToUTF8(Eingabe)
        For iIndx = 0 To UBound(Ausgabe)
            sText = sText & Ausgabe(iIndx) & Chr(9) & Chr(Ausgabe(iIndx)) & Chr(10)
            ReDim Preserve sTmp(iIndx)
            sTmp(iIndx) = Ausgabe(iIndx)
        Next iIndx
        MsgBox sText
    End Sub
  4. Führe das Makro aus, indem Du F5 drückst oder das Makro über das Menü startest.

  5. Teste die Ausgabe im Nachrichtenfeld.

So kannst Du eine „ansi datei“ mit VBA erstellen und den Text in Excel verwenden.


Häufige Fehler und Lösungen

  • Fehler: Unvollständige Dateien
    Wenn Du feststellst, dass einige Dateien nach der Konvertierung unvollständig sind, überprüfe die ursprüngliche UTF-8 Datei. Manchmal sind die Dateien bereits vor der Konvertierung nicht vollständig.

  • Fehler: Falsches Format
    Stelle sicher, dass die Eingabedatei das richtige UTF-8 Format hat. Andernfalls kann es zu Problemen bei der Umwandlung kommen.


Alternative Methoden

Eine weitere Möglichkeit, eine Textdatei von UTF-8 in Ansi umzuwandeln, ist die Verwendung der Kommandozeile mit ICONV. Hier ist ein Beispielbefehl:

iconv -f utf-8 -t windows-1252 utf8.txt > ansi.txt

Diese Methode ist einfach und effizient, wenn Du viele Dateien auf einmal konvertieren möchtest.


Praktische Beispiele

  • VBA Beispiel für die Umwandlung: Das oben stehende VBA-Skript zeigt, wie Du eine einfache Zeichenkette von UTF-8 in Ansi konvertieren kannst.
  • Kommandozeilenbeispiel: Mit ICONV kannst Du auch mehrere Dateien auf einmal konvertieren, was nützlich ist, wenn Du ca. 8000 Textdateien hast.

Tipps für Profis

  • Batch-Konvertierung: Wenn Du viele Dateien konvertieren musst, erstelle ein Skript, das alle Dateien in einem bestimmten Verzeichnis verarbeitet.
  • Verwende Excel: Du kannst die konvertierten „ansi dateien“ direkt in Excel importieren, um die Daten weiter zu bearbeiten.

FAQ: Häufige Fragen

1. Wie kann ich eine ANSI Datei in Excel umwandeln?
Du kannst eine ANSI Datei einfach in Excel importieren, indem Du Daten > Daten abrufen > Aus Datei wählst und dann die Datei auswählst.

2. Ist es möglich, eine ANSI Datei wieder in UTF-8 zu konvertieren?
Ja, Du kannst eine ANSI Datei in UTF-8 umwandeln, indem Du die umgekehrte Konvertierung mit den oben genannten Methoden vornimmst oder ein Tool wie ICONV verwendest.

3. Welche Excel-Version benötige ich für die VBA-Methoden?
Die beschriebenen VBA-Methoden sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige