Thema geschlossen
Ergebnis 1 bis 2 von 2
  1. #1
    Power Poster Daimonion wird schon bald berühmt werden Avatar von Daimonion
    Registriert seit
    08.09.2001
    Ort
    Vöhrebach, wie der Wälder zu sagen pflegt
    Alter
    31
    Beiträge
    1.701
    Downloads
    0
    Uploads
    0
    Renommee-Modifikator
    248

    Standard UCS-2 Datei erstellen

    Hallo Leute

    Ich hoffe ihr könnt mir ein paar Tipps oder Ansätze geben wie ich das Problem lösen kann.

    Ich habe ein VB Makro geschrieben, welches mir die Einträge aus einer Excel Datei in einem speziellen Format in einer Textdatei speichert. Zielkodierung dieser Datei soll UCS-2 sein.
    Als ersten Schritt hab ich mal die Ausgegebenen Strings in UTF-8 gewandelt, was auch soweit gut funktioniert. Dazu hab ich aus dem Netz folgenden Code verwendet:

    Code:
    Private Function GetUTF8String(s As String) As String
       Dim i As Integer  ' Zähler über die einzelnen Zeichen des utf16-Strings
       Dim utf16 As Long, uc(2) As Byte
       
       GetUTF8String = ""
       For i = 1 To Len(s)
          utf16 = AscW(Mid(s, i, 1))
          If utf16 < 0 Then utf16 = utf16 + 65536
          If utf16 < &H80 Then       ' 1 Byte
             GetUTF8String = GetUTF8String & Chr(utf16)
          ElseIf utf16 < &H800 Then  ' 2 Byte
             uc(1) = &H80 + (utf16 And &H3F)  ' Least Significant 6 bits
             utf16 = utf16 \ &H40             ' Shift UTF16 number right 6 bits
             uc(0) = &HC0 + (utf16 And &H1F)  ' Use 5 remaining bits
             GetUTF8String = GetUTF8String & Chr(uc(0)) & Chr(uc(1))
          Else                       ' 3 Byte
             uc(2) = &H80 + (utf16 And &H3F)  ' Least Significant 6 bits
             utf16 = utf16 \ &H40             ' Shift UTF16 number right 6 bits
             uc(1) = &H80 + (utf16 And &H3F)  ' Use next 6 bits
             utf16 = utf16 \ &H40             ' Shift UTF16 number right 6 bits again
             uc(0) = &HE0 + (utf16 And &HF)   ' Use 4 remaining bits
             GetUTF8String = GetUTF8String & Chr(uc(0)) & Chr(uc(1)) & Chr(uc(2))
          End If
       Next
    End Function
    Bisher hab ich mich noch nicht so intensiv mit Codierungen beschäftigen müssen, daher hab ich dahingehend noch nicht ganz so viele Kenntnisse.

    Die Outputfunktion im VB sehen wie folgt aus:

    Code:
    Open strDateiname For Output As #1
    Code:
    Print #1, GetUTF8String(strTemp)
    Sicherlich noch verbesserungswürdig, aber vorerst einmal ausreichend.

    Bekomme ich mit durch Umschreiben der Funktion GetUTF8String denn auch einen UCS-2 String raus oder muss ich auch noch die Schreibfunktionen ändern?

    Was ich bisher weiß:

    UCS-2 ist der Vorgänger von UTF-16 und nutzt eine variable Bytelänge für die Zeichen die maximal 2 Byte lang ist. Stimmt das soweit oder hab ich da auch noch defizite?


    Grüße

    Zitat Stromberg S03E08 - Erika:
    "So...selbst die Capitolmatratze, die hier auf jedem Karosseplan rumgerutscht ist, was will sie von mir? Zahlen. Aber so ist das. Als Chef in meiner Position, da bist du so einsam wie...Gott."

  2. #2
    Power Poster Daimonion wird schon bald berühmt werden Avatar von Daimonion
    Registriert seit
    08.09.2001
    Ort
    Vöhrebach, wie der Wälder zu sagen pflegt
    Alter
    31
    Beiträge
    1.701
    Downloads
    0
    Uploads
    0
    Themenstarter
    Renommee-Modifikator
    248

    Standard

    Okay, Kommando zurück. Ich habs hinbekommen.

    Im Gegensatz zu meiner Vermutung ist UCS-2 nicht wie UTF-8 einer variablen Länge unterlegen, sondern hat eine einfach feste Länge von 2 Bytes. Das macht die Kodierungsgeschichte dann dementsprechend einfach und ich muss die Zeichen einfach immer auf 2 Byte auslegen. ein Problem hatte ich noch und zwar wurde mir vom VBA Befehl "print" immer ein Zeilenumbruch und ein Wagenrücklauf (0D & 0A) geschrieben. Der muss natürlich auch in UCS-2 kodiert werden, also musste ich ihn irgendwie unterdrücken. Das geht bei VBA dann auch mit einem abschließenden Semikolon hinter dem Befehl. Ich hab den Zeilenumbruch und den Wagenrücklauf einfach selber in 2Byte Notation geschrieben.

    Somit bekomme ich jetzt meine gewünschte Datei in der richtigen Kodierung!

    Geholfen dabei hat mir der RFC 2279 http://tools.ietf.org/html/rfc2279


    Grüße

    Zitat Stromberg S03E08 - Erika:
    "So...selbst die Capitolmatratze, die hier auf jedem Karosseplan rumgerutscht ist, was will sie von mir? Zahlen. Aber so ist das. Als Chef in meiner Position, da bist du so einsam wie...Gott."

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Bat Datei erstellen
    Von Rumak18 im Forum Netzwerk Windows XP
    Antworten: 0
    Letzter Beitrag: 03.10.2005, 16:51
  2. EXE Datei erstellen
    Von |MET|MaxDamage im Forum Software Windows XP
    Antworten: 10
    Letzter Beitrag: 03.08.2004, 19:44
  3. iso datei erstellen
    Von MasterAlucard im Forum Software Windows XP
    Antworten: 5
    Letzter Beitrag: 20.02.2004, 23:52
  4. *.sql - Datei erstellen
    Von Lambda im Forum Programmierung und Skripte
    Antworten: 5
    Letzter Beitrag: 26.02.2002, 16:33
  5. MSI-Datei erstellen
    Von groby im Forum Allgemein Windows 2000
    Antworten: 2
    Letzter Beitrag: 04.02.2002, 23:17

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein

Search Engine Friendly URLs by vBSEO 3.6.0