Problemen met ASCII character boven de 127 via

Status
Niet open voor verdere reacties.

richard99

Gebruiker
Lid geworden
17 apr 2010
Berichten
95
Wie kan mij helpen?
Ik probeer tekst uit een willekeurige website te halen echter letters zoals: é, á, ï of ë worden niet herkent en wordt in de plaats een vraagteken gezet.
Ik ben al vier uur eea aan het uitzoeken maar krijg het niet voor elkaar.
Het ligt aan de "iso" type waarvan ik niet de juiste kan vinden.
strXmlType = "text/plain;charset=UTF-8"
Bovenstaande werkt niet en ook ISO-8859-1 werkt niet.
Onderstaande code gebuik ik en ik heb het ook nog geprobeert met een With CreateObject("ADODB.Stream") maar dat werkte ook niet.
Wellicht dat iemand eerder dit probleem is tegengekomen en heeft opgelost.

Public Function GetValueUrl(strUrl7 As String) As String
Dim msXML As Object
Dim fh As Long
Dim strXmlType As String

fh = FreeFile
Set msXML = CreateObject("Microsoft.XMLHTTP")
msXML.Open "GET", strUrl7, False

strXmlType = "text/plain;charset=UTF-8"
msXML.SetRequestHeader "Content-type", strXmlType

msXML.Send
GetValueUrl = msXML.ResponseText

End Function
 
Je gebruikt msXML.Open "GET", strUrl7, False
Url7 is een 7bit encoding waarmee je hier je data boven de 127 al weggooit lijkt me?!
(Zo goed zit ik ook weer niet in VBA)
 
Haha sorry maar ik heb een verkeerde variabele naam gebruikt.
strUrl7 is een variabele en ik ook strUrl64 ofzelfs strUrl128 kunnen gebruiken.
Sorry voor de verwarring.
In ieder geval blijft het probleem intact jammer genoeg
 
Dankje maar die had ik ook al geprobeerd.
Ben er zo'n 4 uur zoet mee geweest en ik heb veel suboplossingen gezien maar telkens niet de juiste.
 
Kun je svp de website waar je over hebt hier plaatsen, dan kunnen we met dezelfde gegevens testen.

Je kunt nog altijd je toevlucht nemen tot een API, hoewel ik de voorkeur voor 'gewone' VBA heb.

Code:
Private Declare Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
       
Public Function F_ASC_ANS(ByVal Text As String) As String
  OemToCharA Text, Text
  F_ASC_ANS = Text
End Function

Sub M_snb()
   msgbox F_ASC_ANS chr(132)
End Sub
 
Mee eens echter nu verkeer ik me in een fase waar het mij niet uitmaakt hoe het opgelost wordt haha...

http://www.uitmetkinderen.nl/pages/R-s--t-Hof-van-Haamstede.htm
Bovenstaande is zo'n website.
In deze website vind je de eerste regeltekst:
Op deze résidence in Burgh-Haamstede voelt u zich als een vorst of vorstin in de oudheid.
Als ik de website inleest dan krijg ik de volgende resultaat:
Op deze r ? sidence in Burgh-Haamstede voelt u zich als een vorst of vorstin in de oudheid.

Ik ben erg benieuwd of jij de code zodanig kan aanpassen dat ie ASCII character boven de 127 correct inleest.
 
Het is altijd simpeler dan je denkt:

Code:
Sub M_snb()
   With New WinHttpRequest
      .Open "GET", "http://www.uitmetkinderen.nl/pages/R-s--t-Hof-van-Haamstede.htm", False
      .Send
      
      MsgBox .ResponseText
    End With
End Sub

Met late koppeling:

Code:
Sub M_snb()
   With CreateObject("winhttp.winhttprequest.5.1")
      .Open "GET", "http://www.uitmetkinderen.nl/pages/R-s--t-Hof-van-Haamstede.htm", False
      .Send
      
      MsgBox .ResponseText
    End With
End Sub
 
Laatst bewerkt:
of
Code:
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", "http://www.uitmetkinderen.nl/pages/R-s--t-Hof-van-Haamstede.htm", False
        .Send
        MsgBox StrConv(.ResponseBody, vbUnicode)
    End With
Met msxml.xmlhttp houd je het geheel client-side (niet dat dat in dit geval wat uitmaakt).
Met strconv heb je geen api nodig.
De code in het eerste bericht is oud en is nog uit de tijd van internet explorer 5 en 6
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan