UTF-8 Conversion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • UTF-8 Conversion

    Hallo,

    ich kämpfe mal wieder mit Zeichensätzen. Per VBScript hole ich Kontaktdaten aus Outlook und sende sie per http-Request zu meinem Web-Server (bei Interesse kann ich das VBScript gerne posten).

    Da ich in der DB UTF-8 als Zeichensatz gesetzt habe, wollte ich die einzelnen Felder per utf8_encode umkodieren und dann in die DB schreiben. Da ich auch nach dem Einsatz von utf8_encode (mb_convert_encoding($_POST["stadt"], "utf-8") habe ich auch schon ohnen Erfolg versucht) Schrott statt Umlaute in der DB stehen habe, vermute ich mal, dass die ankommenden Daten garnicht in ISO-8859-1 kodiert sind.

    Sehe ich das richtig und wenn ja, wie sind die Daten kodiert und wie bekomme ich sie in UTF8?

  • #2
    Dadurch konvertierst du zweimal auf UTF-8 (einmal mb_convert_encoding und einmal utf8_encode). Da kann nix dabei rauskommen.

    Kommentar


    • #3
      Zeichensatz der Datenbankverbindung auch auf UTF-8 gesetzt? Was VB jetzt an Daten schickt solltest du eigentlich am besten wissen (da wir das Skript ja nicht kennen).

      Kommentar


      • #4
        Die Verbindung ist auch auf utf8. Das läuft alles korrekt mit meinen anderen Scripts.

        Natürlich kodiere ich nicht zweimal um. Zuerst habe ich utf8_encode versucht und als das nicht funktionierte mit mb_convert... ganz doof bin ich ja auch nicht.

        Habe keine Ahnung wie Windows VBScript die Daten versendet. Ich poste das Script hier mal, obwohl die wenigsten damit wahrscheinlich was anfangen können.


        EDIT:

        On Error Resume Next
        Dim oxmlhttp, surl, srequest
        surl = "http://www.meineDomain.com/addKontakt.php"

        strUnternehmen = "Testfirma"
        strTeamID = "Testteam"
        strUserID = "WilliMuster"

        Const olFolderContacts = 10

        Set objOutlook = CreateObject("Outlook.Application")
        Set objNamespace = objOutlook.GetNamespace("MAPI")
        Set colContacts = objNamespace.GetDefaultFolder(olFolderContacts).Items
        set oxmlhttp=createobject("msxml2.xmlhttp")

        count=0

        For Each objContact In colContacts

        flag=0

        If objContact.Title <> "" then
        sTitel=objContact.Title
        flag=flag+1
        else
        sTitel=" "
        end If

        If objContact.Lastname <> "" then
        sName=objContact.Lastname
        flag=flag+1
        else
        sName=" "
        end If

        If objContact.Firstname <> "" then
        sVorname=objContact.Firstname
        else
        sVorname=" "
        end If

        If objContact.CompanyName <> "" then
        sFirmenname=objContact.CompanyName
        flag=flag+1
        else
        sFirmenname=" "
        end If

        If objContact.BusinessAddressStreet <> "" then
        sStrasse=objContact.BusinessAddressStreet
        else
        sStrasse=" "
        end If

        If objContact.BusinessAddressPostalCode <> "" then
        sPlz=objContact.BusinessAddressPostalCode
        else
        sPlz=" "
        end If

        If objContact.BusinessAddressCity <> "" then
        sOrt=objContact.BusinessAddressCity
        else
        sOrt=" "
        end If

        If objContact.BusinessAddressCountry <> "" then
        sLand=objContact.BusinessAddressCountry
        else
        sLand=" "
        end If

        If objContact.BusinessAddressState <> "" then
        sStaat=objContact.BusinessAddressState
        else
        sStaat=" "
        end If

        If objContact.BusinessTelephoneNumber <> "" then
        sTelefon=objContact.BusinessTelephoneNumber
        else
        sTelefon=" "
        end If

        If objContact.BusinessFaxNumber <> "" then
        sFax=objContact.BusinessFaxNumber
        else
        sFax=" "
        end If

        If objContact.MobileTelephoneNumber <> "" then
        sMobil=objContact.MobileTelephoneNumber
        else
        sMobil=" "
        end If
        If objContact.Email1Address <> "" then
        sEmail=objContact.Email1Address
        flag=flag+1
        else
        sEmail=" "
        end If

        If objContact.Birthday <> "" then
        sGeburtstag=objContact.Birthday
        else
        sGeburtstag=" "
        end If

        If objContact.BusinessHomePage <> "" then
        sWebsite=objContact.BusinessHomePage
        else
        sWebsite=" "
        end If

        If objContact.Department <> "" then
        sAbteilung=objContact.Department
        else
        sAbteilung=" "
        end If

        If objContact.Role <> "" then
        sFunktion=objContact.Role
        else
        sFunktion=" "
        end If

        If objContact.JobTitle <> "" then
        sPosition=objContact.JobTitle
        else
        sPosition=" "
        end If

        If objContact.Profession <> "" then
        sFunktion=objContact.Profession
        else
        sFunktion=" "
        end If

        If flag= 4 then
        srequest="unternehmen=" & strUnternehmen & "&userid=" & strUserID & "&titel=" & sTitel & "&name=" & sName & "&vorname=" & sVorname & "&firmenname=" & sFirmenname & "&strasse=" & sStrasse & "&plz=" & sPlz & "&ort=" & sOrt & "&land=" & sLand & "&staat=" & sStaat & "&telefon=" & sTelefon & "&fax=" & sFax & "&mobiltelefon=" & sMobil & "&email=" & sEmail & "&geburtstag=" & sGeburtstag & "&website=" & sWebsite & "&abteilung=" & sAbteilung & "&position=" & sPosition & "&funktion=" & sFunktion & "&funktion=" & sFunktion

        with oxmlhttp
        .open "post",surl,false
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .send srequest
        If oxmlhttp.Status <> 200 then
        Err.Raise 1, "HttpRequester", "Invalid HTTP Response Code"
        else
        count=count+1
        end If
        end with
        end If

        Next
        MsgBox count & " contacts transferred"


        Kommentar


        • #5
          Schon mb_detect_encoding() probiert?

          Kommentar


          • #6
            Vielen Dank für Eure Hilfe.

            Habe inzwischen das Problem dadurch gelöst, dass ich VBScript dazu bekommen habe in utf-8 zu senden. Das geht ganz einfach so:

            setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");

            Kommentar

            Lädt...
            X