Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
JAP
Newbie
Newbie

Anmeldedatum: 13.11.2009
Beiträge: 2

Encoding in UTF-8 erzwingen
Verfasst am: 13.11.2009, 10:21

Guten Tag,

ich habe ein VB Script um Einträge in einem EXCEL-Arbeitsblatt in eine *.txt Datei zu schreiben.
Die Web-Anwendung die mit diesen Dateien arbeiten soll erwartet UTF-8 VB speichert die Dateien aber im Windows/ANSI Format.

Gibt es eine Möglichkeit VB die geforderte Codierung beim schreiben der Datei mitzugeben???

Hier mal der Code:

Code:

Option Explicit

'Path & names

Const gPath As String = "\TSV\"
Const gFSC As String = "QuartzFongJob.tsv"

'Column numbers
Const gS1_VERCol As Integer = 1
Const gS1_MNCol As Integer = 2
Const gS1_STATUSCol As Integer = 3
Const gS1_NOTECol As Integer = 4
Const gS1_CRONEXCol As Integer = 5
Const gS1_JUNCol As Integer = 6
Const gS1_SCNCol As Integer = 7
Const gs1_SDate As Integer = 8
Const gs1_EDate As Integer = 9



Public Function getCurrentVersion() As String
    Dim a As Range
    Dim ver As Single
    Dim tmp As Single
    Dim c As Object
    Dim s As String

    Set a = Sheets(1).UsedRange.Columns(gS1_VERCol)
    ver = 0
   
    For Each c In a.Cells
        s = Replace(c, ".", ",")
        If IsNumeric(s) Then
            tmp = CSng(s)
            If tmp > ver Then ver = tmp
        End If
    Next c
   
    getCurrentVersion = Replace(CStr(ver), ",", ".")
End Function

Private Sub CommandButton1_Click()
   
    'vars
    Dim fs As Object
    Dim outfile As Object
    Dim cv As String
    Dim line As String
    Dim lastKey As String
    Dim i As Long
    Dim btnCaption As String
   
    btnCaption = CommandButton1.Caption
   
    CommandButton1.Caption = "working..."
   
    'find current version
    cv = getCurrentVersion()
   
    'get access to file system
    Set fs = CreateObject("Scripting.FileSystemObject")
       
    If Not fs.FolderExists(ThisWorkbook.Path & gPath) Then
        fs.CreateFolder (ThisWorkbook.Path & gPath)
    End If
   
    '*************************************************************************
   
    'create MR file
    Set outfile = fs.CreateTextFile(ThisWorkbook.Path & gPath & gFSC, True)
   
   
    For i = 1 To Sheets(1).UsedRange.Rows.Count
        If Sheets(1).UsedRange.Cells(i, gS1_VERCol) = cv Then
            line = Sheets(1).UsedRange.Cells(i, gS1_MNCol) & vbTab
            line = line & Sheets(1).UsedRange.Cells(i, gS1_STATUSCol) & vbTab
            line = line & Sheets(1).UsedRange.Cells(i, gS1_NOTECol) & vbTab
            line = line & Sheets(1).UsedRange.Cells(i, gS1_CRONEXCol) & vbTab
            line = line & Sheets(1).UsedRange.Cells(i, gS1_JUNCol) & vbTab
            line = line & Sheets(1).UsedRange.Cells(i, gS1_SCNCol) & vbTab
            line = line & Sheets(1).UsedRange.Cells(i, gs1_SDate) & vbTab
            line = line & Sheets(1).UsedRange.Cells(i, gs1_EDate)
        End If
    Next i
    outfile.Close
   
    CommandButton1.Caption = btnCaption
   
    Beep
    Beep
    Beep
   
    MsgBox "TSV files generated", vbInformation, "Finished"
   
    '********************************************************************************
   
End Sub


Ich arbeite mit Microsoft Visual Basic 6.5

Vielen Dank schon mal im Vorraus
_________________
 
muerzi
Tutorial Leser
Tutorial Leser

Anmeldedatum: 03.08.2009
Beiträge: 45
Wohnort: Leoben


Verfasst am: 13.11.2009, 19:51

hallo

war / bin auch auf der suche nach sowas.

ich habs so gelöst: die *.txt ( in meinem Fall *.xml) erstellen,
und dann die datei zeile um zeile und buchstabe für buchstabe einlesen
und per Select Case dann umwandeln.

Gibts aber bestimmt andere "schönere Lösungen".
Am Dateibeginn sollte auch noch was bestimmtes stehen
3 Zeichen oder so damit es als UTF-8 erkannt wird.
Genaueres kann ich dir erst am Montag schreiben, weil ich mom. nicht in der Areit bin.
jaaaaaaa, auch die IT hab mal wochnende

lg
 
JAP
Newbie
Newbie

Anmeldedatum: 13.11.2009
Beiträge: 2


Verfasst am: 16.11.2009, 14:27

Hallo zusammen,

ich habe eine Möglichkeit gefunden das Problem mittels JAVA zu umgehen.
Ich lese die Dateien jetzt mit einem FileInputReader ein, dem kann man das Encoding mitgeben.

@muerzi
Vielen Dank für Deine Bemühungen

MfG
JAP
_________________


 
muerzi
Tutorial Leser
Tutorial Leser

Anmeldedatum: 03.08.2009
Beiträge: 45
Wohnort: Leoben


Verfasst am: 17.11.2009, 11:54


Hab mir da mal eine function gebastelt die eine Datei in beliebige "Formate" umwandelt
Folgenden Code einfach in Modul geben, und im Programm mit "Call FileToUTF8 (Pfad und Name der Datei, Charset_aus_Liste) aufrufen

Code:


'Charset:
'        UTF_7="utf-7", UTF_8="utf-8"
'        BIG5="big5", US_ASCII "us-ascii"
'        ISO_8859_1="iso-8859-1", ISO_8859_2="iso-8859-2"
'        ISO_8859_3="iso-8859-3", ISO_8859_4="iso-8859-4"
'        ISO_8859_5="iso-8859-5", ISO_8859_6="iso-8859-6"
'        ISO_8859_7="iso-8859-7", ISO_8859_8="iso-8859-8"
'        ISO_8859_9="iso-8859-9", EUC_JP="euc-jp"
'        EUC_KR "euc-kr"=GB2312, "gb2312"=ISO_2022_JP "iso-2022-jp"
'        ISO_2022_KR="iso-2022-kr", KOI8_R="koi8-r"
'        Shift_JIS="shift-jis"

Public Function FileToUTF8(sFilename As String, CharFormat As String)
 
  Dim F As Integer
  Dim sInhalt As String
  Dim objStream As Object
 
  If Dir$(sFilename, vbNormal) <> "" Then       ' Existiert die Datei ?
    F = FreeFile
    Open sFilename For Binary As #F             ' Textdatei im Binärmodus öffnen
    sInhalt = Space$(LOF(F))
    Get #F, , sInhalt                           ' Inhalt in einem Rutsch auslesen
    Close #F                                    ' Textdatei schließen
  End If
 
  If Dir$(sFilename & "-Orig", vbNormal) <> "" Then       ' Existiert die Datei ?
    Kill sFilename & "-Orig"            ' Textdatei schließen
  End If
 
  Name sFilename As sFilename & "-Orig"         'Original Datei umbennen

  Set objStream = CreateObject("ADODB.Stream")  'Stream erzeugen
  With objStream
        .Open                                   'Öffen
        .Position = 0                           'Cursor setzen
        .Charset = CharFormat                   'Charset angeben
        .WriteText sInhalt                      'Zeichen in Stream schreiben
        .SaveToFile sFilename                   'Stream in Datei schreiben
  End With
 
 
End Function
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: visual basic, utf8, encoding, erzwingen

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge [suche] Tuturials winsock & daten senden 869 09.06.2011, 12:19
Keine neuen Beiträge [Video] *.dll & *.ocx Installer 2432 06.03.2008, 20:19
Keine neuen Beiträge ListView speichern & laden 1242 05.08.2008, 12:32
Keine neuen Beiträge Registry & Co Fragen 1101 03.05.2007, 09:57
Keine neuen Beiträge Listbox speichern & laden 2047 22.03.2007, 20:25
 



[ Time: 0.2505s ][ Queries: 93 (0.0679s) ][ GZIP on - Debug on ]