'
' codiert einen UTF-8 String in UTF-16BE um
' frei nach: [url]http://www.vovisoft.com/unicode/UniFunctions.htm#UTF8ToUniStr[/url]
'
Function FromUTF8String(ByVal s As String) As String
Dim i As Integer, b(2) As Byte
i = 1
s = s & Chr(0) & Chr(0)
Do While i <= Len(s) - 2
b(0) = Asc(Mid(s, i, 1))
b(1) = Asc(Mid(s, i + 1, 1))
b(2) = Asc(Mid(s, i + 2, 1))
If (b(0) And &HE0) = &HE0 Then
FromUTF8String = FromUTF8String & ChrW((b(0) And &HF) * CLng(&H1000) + (b(1) And &H3F) * CLng(&H40) + (b(2) And &H3F))
i = i + 3
ElseIf (b(0) And &HC0) = &HC0 Then
FromUTF8String = FromUTF8String & ChrW((b(0) And &H1F) * &H40 + (b(1) And &H3F))
i = i + 2
Else
FromUTF8String = FromUTF8String & Chr(b(0))
i = i + 1
End If
Loop
End Function
Cells.Replace What:="Ä", Replacement:="Ä", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Dim oStream As Object
Dim vDaten As Variant
Const vName = "../Pfad/Datei.txt"
Set oStream = CreateObject("ADODB.Stream")
oStream.Charset = "utf-8"
oStream.Open
oStream.LoadFromFile (vName)
vDaten = oStream.ReadText()
oStream.Close
Set oStream = Nothing
vDaten = Split(vDaten, vbCrLf)
Option Explicit
Sub Main()
Dim i As Long
For i = 1 To 8
With Worksheets("Tabelle1")
.Cells(i, 2).Value = SuchenKonvertieren(.Cells(i, 1).Value)
End With
Next
End Sub
Function SuchenKonvertieren(InString As String) As String
Dim NeuString As String
Dim PosStart As Long
Dim PosEnde As Long
PosStart = InStr(1, InString, "=?")
PosEnde = 1
NeuString = ""
If PosStart > 0 Then
While PosStart > 0
NeuString = NeuString & Mid(InString, PosEnde, PosStart - PosEnde)
PosEnde = InStr(PosStart + 10, InString, "?=")
NeuString = NeuString & ConvertUTF(Mid(InString, PosStart, PosEnde - PosStart))
PosStart = InStr(PosStart + 10, InString, "=?")
PosEnde = PosEnde + 2
If PosStart = 0 Then
NeuString = NeuString & Mid(InString, PosEnde, 9999)
End If
Wend
Else
NeuString = InString
End If
SuchenKonvertieren = NeuString
End Function
Private Function ConvertUTF(myString) As String
Dim oStream As Object
Dim MyUTF() As Byte
Dim i As Long
Dim Anz As Long
ReDim MyUTF(999)
Anz = 0
i = 11
While i <= Len(myString)
If Mid(myString, i, 1) = "=" Then
MyUTF(Anz) = CByte(WorksheetFunction.Hex2Dec(Mid(myString, i + 1, 2)))
Anz = Anz + 1
i = i + 3
Else
MyUTF(Anz) = CByte(Asc(Mid(myString, i, 1)))
Anz = Anz + 1
i = i + 1
End If
Wend
ReDim Preserve MyUTF(Anz - 1)
Set oStream = CreateObject("ADODB.Stream")
oStream.Charset = "utf-8"
oStream.Open
oStream.Type = 1 'adTypeBinary
oStream.Position = 0
oStream.Write MyUTF()
oStream.SetEOS
oStream.Position = 0
oStream.Type = 2 'adTypeText
ConvertUTF = oStream.ReadText()
oStream.Close
Set oStream = Nothing
End Function
Sub TestBase64()
Dim base64Str As String
Dim vArr As Variant
Dim oStream As Object
base64Str = "SWhyIGJ1aGw6S29udG8gaXN0IGdlbMO2c2NodA=="
vArr = Base64ToArray(base64Str)
Set oStream = CreateObject("ADODB.Stream")
oStream.Charset = "utf-8"
oStream.Open
oStream.Type = 1 'adTypeBinary
oStream.Position = 0
oStream.Write vArr
oStream.SetEOS
oStream.Position = 0
oStream.Type = 2 'adTypeText
MsgBox (oStream.ReadText())
oStream.Close
Set oStream = Nothing
End Sub
Private Function Base64ToArray(base64Text As String) As Variant
Dim xmlDoc As Object
Dim xmlNode As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set xmlNode = xmlDoc.createElement("b64")
xmlNode.DataType = "bin.base64"
xmlNode.Text = base64Text
Base64ToArray = xmlNode.nodeTypedValue
End Function
Cells.Replace What:="=C3=BC", Replacement:="ü", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Sub convertText()
Cells.Replace What:="Ä", Replacement:="Ä", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="ä", Replacement:="ä", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="Ö", Replacement:="Ö", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="ö", Replacement:="ö", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="Ü", Replacement:="Ü", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="ü", Replacement:="ü", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="ß", Replacement:="ß", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="á", Replacement:="á", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="é", Replacement:="é", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
Cells.Replace What:="è", Replacement:="è", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True
End Sub
Function convertText(strString as String) As String
strString = Replace(strString,"=C3=BC","ü")'auf die Nennung der Parameter kann verzichtet werden
strString = Replace(strString,"wasauchimmer","ä")
'...
convertText = strString
End Function
Function convertText(strString as String) As String
Dim tmpString as String
tmpString = strString
tmpString = Replace(tmpString,"=C3=BC","ü")'auf die Nennung der Parameter kann verzichtet werden
tmpString = Replace(tmpString,"wasauchimmer","ä")
'...
convertText = tmpString
End Function