vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
INI-Dateien auslesen (UTF8) 
Autor: VBCoburg
Datum: 29.06.05 14:24

Hallo

mit der Funktion "GetPrivateProfileString" lese ich aus einer INI-Datei Daten aus.

Wenn die Datei im Windows-Standard-Zeichensatz abgespeichert ist, funktioniert auch alles.

Ist die Datei aber in "UTF8" abgespeichert, dann bekomme ich die falschen zeichen.

Meine Frage:
1. kann ich irgendwo den Zeichensatz der Datei angeben.

2.gibt es eine Funktion zum "auslesen" und "schreiben" einer INI-Datei wo man den Zeichensatz angeben kann.

Gruß
Holger
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: INI-Dateien auslesen (UTF8) 
Autor: CyberDreams
Datum: 29.06.05 15:03

Nach dem Auslesen des Eintrags kannst folgende Funktionen (in einem Modul) verwenden. In deinem speziellen Fall nimmst du die Funktion DecodeUTF8

Option Compare Binary
Option Explicit
 
 
'-------------------------------------------------------------------------
' Konstanten
'-------------------------------------------------------------------------
Private Const CP_ACP = 0
Private Const CP_UTF8 = 65001
 
 
'-------------------------------------------------------------------------
' API-Deklarationen
'-------------------------------------------------------------------------
Private Declare Function GetACP Lib "kernel32" () As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As _
  Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte _
  As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As _
Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As _
Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal _
lpDefaultChar As Long, lpUsedDefaultChar As Long) As Long
 
 
 
'-------------------------------------------------------------------------
' DecodeUTF8
'-------------------------------------------------------------------------
Public Function DecodeUTF8(ByVal sValue As String) As String
 
  If Len(sValue) = 0 Then Exit Function
  DecodeUTF8 = WToA(sValue, CP_ACP)
  DecodeUTF8 = AToW(DecodeUTF8, CP_UTF8)
 
End Function
 
 
'-------------------------------------------------------------------------
' EncodeUTF8
'-------------------------------------------------------------------------
Public Function EncodeUTF8(ByVal sValue As String) As String
 
  If Len(sValue) = 0 Then Exit Function
  EncodeUTF8 = StrConv(WToA(sValue, CP_UTF8), vbUnicode)
 
End Function
 
 
'-------------------------------------------------------------------------
'   WToA
'   UNICODE to ANSI conversion, via a given codepage
'-------------------------------------------------------------------------
Private Function WToA(ByVal sValue As String, Optional ByVal cpg As Long = -1, _
  Optional ByVal lFlags As Long = 0) As String
Dim cwch              As Long
Dim pwz               As Long
Dim pwzBuffer         As Long
Dim sBuffer           As String
 
  If cpg = -1 Then cpg = GetACP()
  pwz = StrPtr(sValue)
  cwch = WideCharToMultiByte(cpg, lFlags, pwz, -1, 0&, 0&, ByVal 0&, ByVal 0&)
  sBuffer = String$(cwch + 1, vbNullChar)
  pwzBuffer = StrPtr(sBuffer)
  cwch = WideCharToMultiByte(cpg, lFlags, pwz, -1, pwzBuffer, Len(sBuffer), _
    ByVal 0&, ByVal 0&)
  WToA = Left$(sBuffer, cwch - 1)
 
End Function
 
 
'-------------------------------------------------------------------------
'   AToW
'   ANSI to UNICODE conversion, via a given codepage.
'-------------------------------------------------------------------------
Private Function AToW(ByVal sValue As String, Optional ByVal cpg As Long = -1, _
  Optional ByVal lFlags As Long = 0) As String
Dim cwch      As Long
Dim pwz       As Long
Dim pwzBuffer As Long
Dim sBuffer   As String
 
  If cpg = -1 Then cpg = GetACP()
  pwz = StrPtr(sValue)
  cwch = MultiByteToWideChar(cpg, lFlags, pwz, -1, 0&, 0&)
  sBuffer = String$(cwch + 1, vbNullChar)
  pwzBuffer = StrPtr(sBuffer)
  cwch = MultiByteToWideChar(cpg, lFlags, pwz, -1, pwzBuffer, Len(sBuffer))
  AToW = Left$(sBuffer, cwch - 1)
 
End Function

Mfg
CyberDreams

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: INI-Dateien auslesen (UTF8) 
Autor: VBCoburg
Datum: 30.06.05 07:10

Danke

für die schnelle Hilfe

funktioniert alles sehr gut.

Gruß
Holger
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel