php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
UTF-8 Conversion


 
Stonebreaker62
17-11-2008, 22:19 
 
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?

 
h3ll
17-11-2008, 22:32 
 
Dadurch konvertierst du zweimal auf UTF-8 (einmal mb_convert_encoding und einmal utf8_encode). Da kann nix dabei rauskommen.

 
PHP-Desaster
17-11-2008, 23:06 
 
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).

 
Stonebreaker62
17-11-2008, 23:19 
 
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.



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"

 
h3ll
17-11-2008, 23:27 
 
Schon mb_detect_encoding() (http://de.php.net/manual/en/function.mb-detect-encoding.php) probiert?

 
Stonebreaker62
18-11-2008, 03:34 
 
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");


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:18 Uhr.