Я пытаюсь разобрать строку ответа JSON, полученную из запроса XmlHttp, в asp classic.
Моя проблема в том, что мои шведские символы ä становятся \ xE4, и то же самое с å и ö.
Я использую aspJSON.asp для его анализа, и я устанавливаю response.LCID = 1053 для шведского языка, включая aspJSON.asp и короткую отправку и получаю ответ обратно, как это.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="../../koppling.asp" -->
<!--#include file="aspJSON1.17.asp" -->
<%Response.LCID = 1053%>
<%
Response.charset="utf-8"
Response.CodePage = 65001
Set objXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
objXmlHttp.Open "GET", url, False
objXmlHttp.SetRequestHeader "Content-Type", "application/json"
objXmlHttp.SetRequestHeader "User-Agent", "ASP/3.0"
objXmlHttp.Send ()
If objXmlHttp.Status = 200 Then
jsonstring = CStr(objXmlHttp.ResponseText)
'response.write jsonstring
Set oJSON = New aspJSON
'Load JSON string
oJSON.loadJSON(jsonstring)
'getting the JSON value like this
fnamn=oJSON.data("payment").item("consumer").item("privatePerson").item("firstName")
И когда в fnamn есть ääö, я не могу вставить его в свою базу данных, потому что я получаю эту ошибку "Неверное строковое значение: '\ xE4gen'" и его, потому что в ответе есть ä.
Так почему же он не преобразует символ, как следует, где я могу ошибаться?
Любой ввод действительно приветствуется, спасибо.
РЕДАКТИРОВАТЬ
ОК, поэтому ядобавил Response.CodePage = 65001
на страницу, и теперь "fnamn" пишет правильно, когда я пишу response.write fnamn
Но я все еще получаю эту ошибку, когда пытаюсь вставить ее в мою базу данных mysql?
Microsoft OLE DB Provider for ODBC Drivers fel '80004005'
[MySQL][ODBC 3.51 Driver][mysqld-5.7.21-log]Incorrect string value: '\xE4gen' for column 'adress' at row 1
И эта часть \xE4
является символом ä.
Иэто дырявый сын в ответе, который я получаю.
{"payment":{"paymentId":"51abf1fa7a014459b1e591dc534e9354","summary":{"reservedAmount":17000,"chargedAmount":17000},"consumer":{"shippingAddress":{"addressLine1":"Centralvägen","receiverLine":"Per Henrik Nordin","postalCode":"83162","city":"ÖSTERSUND","country":"SWE"},"company":{"contactDetails":{"phoneNumber":{}}},"privatePerson":{"firstName":"Per Henrik","lastName":"Nordin","email":"info@manmade.se","phoneNumber":{"prefix":"+46","number":"702315096"}}},"paymentDetails":{"paymentType":"CARD","paymentMethod":"Visa","invoiceDetails":{},"cardDetails":{"maskedPan":"492500******0004","expiryDate":"0320"}},"orderDetails":{"amount":17000,"currency":"SEK","reference":"860153"},"checkout":{"url":"https://www.manmade.se/dumpen/index.asp"},"created":"2019-05-19T04:19:31.5198+00:00","charges":[{"chargeId":"1306fbec6fcd4d68a3681bd16f9de1ec","amount":17000,"created":"2019-05-19T06:19:52.8161+02:00","orderItems":[{"reference":"2-1530","name":"Svart Budda huvud","quantity":1.0,"unit":"st","unitPrice":12800,"taxRate":2500,"taxAmount":4200,"grossTotalAmount":17000,"netTotalAmount":12800}]}]}}
И две проблемы - это addressLine1 и city в приведенном выше, поскольку в них есть ä и Ö.И я получаю значения с этим.
adress=oJSON.data("payment").item("consumer").item("shippingAddress").item("addressLine1")
postadress=oJSON.data("payment").item("consumer").item("shippingAddress").item("city")
И затем я пытаюсь вставить их с этим sql.
sql= "INSERT INTO ordrar(userId,appusers_id,paymentId,produkt_id,produkter_id,ordernummer,antal,pris,fraktkostnad,artikel,texten,artikelnummer,farg,fargnummer,storlek,datum,betald,annonser_id,korttyp,kortnr,chargeId,big_image,big_image2,big_image3,big_image4,big_image5,betaltbelopp,email,fnamn,enamn,adress,postnr,postadress,mobil,annonstyp,annonsstatus) VALUES ("&rs("userId")&","& appusersId &",'"& dibspaymentId &"',"& rs("produkt_id") &","& rs("produkter_id") &",'"& dibsordernr &"',"& rs("antal") &","& rs("pris") &","& rs("fraktkostnad") &",'"& rs("artikel") &"','"& rs("texten") &"','"& rs("artikelnummer") &"','"& rs("farg") &"','"& rs("fargnummer") &"','"& rs("storlek") &"','"& rs("datum") &"','"&betald&"',"& rs("annonser_id") &",'"&dibspaymentMetod&"','"&dibskortNr&"','"&dibschargeId&"','"& rs("big_image") &"','"& rs("big_image2") &"','"& rs("big_image3") &"','"& rs("big_image4") &"','"& rs("big_image5") &"','"& dibssumma &"','"& email &"','"& fnamn &"','"& enamn &"','"& adress &"','"& postnr &"','"& postadress &"','"& mobil &"','"& annonstyp &"','ejgranskad');"
Но так как он правильно отображает ä, когда я пишу response.writeадрес, я не понимаю, почему он говорит, что это Incorrect string value: '\xE4gen' for column 'adress'
?