как кодировать расширенные символы в ASP - PullRequest
1 голос
/ 17 февраля 2011

У меня есть следующий код asp, который получает данные POST со страницы HTML, а затем отправляет электронное письмо с данными получателю.Все работает отлично, за исключением случаев, когда расширенные символы находятся в любом из полей формы, например, например,

Högberg и Pensevägen

Они заканчиваются как

Hà ¶gberg и Pensevà ¤gen13A

Как мне их кодировать, чтобы полученное электронное письмо показывало правильные символы. Существует ли encodeURIComponent () для ASP и будет ли это работать?

<%
Option Explicit
Dim referer
Dim siteurl
Dim email_from
Dim email_to
Dim strMsg
referer = Request.ServerVariables("HTTP_REFERER")
siteurl = "www.example.com"
email_from = "somename@example.com"
email_to = "somename@example.com"
strMsg = "Order ID : " & request.form("ordernumber") & "<br>" 
strMsg=strMsg+ "Order Date : " & request.form("orderdate") & "<br>" 
strMsg=strMsg+ "Ship Date : " & request.form("shipdate") & "<br>"
strMsg=strMsg+ "Current Status : " & request.form("currentstatus") & "<br>"
strMsg=strMsg+ "Current Selected Ship Method : " &  request.form("currentselectedmethod") & "<br>"
strMsg=strMsg+ "Shipping Method : " & request.form("shippingmethod") & "<br>"
strMsg=strMsg+ "Tracking No : " & request.form("trackingnumber") & "<br>"
strMsg=strMsg+ "Payment Method : " & request.form("paymentmethod") & "<br>"
strMsg=strMsg+ "Customer ID : " & request.form("customerid") & "<br>"
strMsg=strMsg+ "Ship Company Name : " & request.form("companyName") & "<br>"
strMsg=strMsg+ "Ship Name : " & request.form("personName") & "<br>"
strMsg=strMsg+ "Ship Address1 : " & request.form("address1") & "<br>"
strMsg=strMsg+ "Ship Address2 : " & request.form("address2") & "<br>"
strMsg=strMsg+ "Ship City : " & request.form("city") & "<br>"
strMsg=strMsg+ "Ship State : " & request.form("state") & "<br>"
strMsg=strMsg+ "Ship Zip : " & request.form("zip") & "<br>"
strMsg=strMsg+ "Ship Country : " & request.form("country") & "<br>"
strMsg=strMsg+ "Ship Phone : " & request.form("phone") & "<br>"
strMsg=strMsg+ "Customer Email Address : " & request.form("email_address") & "<br>"
strMsg=strMsg+ "Total Received : " & request.form("totalreceived") & "<br>"
strMsg=strMsg+ "Total Due : " & request.form("totaldue") & "<br>"

if InStr(referer, siteurl ) > 0 Then

    Dim HTTPRequest
    Set HTTPRequest = CreateObject("WinHTTP.WinHTTPRequest.5.1")
    HTTPRequest.Open "POST", "http://" & Request.ServerVariables("LOCAL_ADDR") & "/email.asp", False
    HTTPRequest.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    HTTPRequest.SetRequestHeader "Host", Request.ServerVariables("SERVER_NAME")
    HTTPRequest.Send _
        "VsmtpKey=" & "1234-5678-8902451525-5525" &_
        "&Subject=" & Server.URLEncode("Order ") & Server.URLEncode(request.form("ordernumber")) & Server.URLEncode(" Shipped") &_
        "&FromEmailAddress=" & email_from &_
        "&ToEmailAddress=" & email_to &_
        "&Body_HTML=" & Server.URLEncode(strMsg) &_
response.write(strMsg) 
response.write(HTTPRequest.ResponseText)

End If
Set HTTPRequest = Nothing
%>

Ответы [ 2 ]

0 голосов
/ 22 февраля 2011

Вы пытались изменить способ, которым сервер анализирует набор символов? Я помню, что мне пришлось использовать:

Response.CharSet = "windows-1252"

Также попробуйте использовать свойство Codepage в верхней части вашего скрипта

Response.CodePage = 1252
Если это не установлено, страница будет закодирована по умолчанию на сервере.

Кодовая страница 65001 используется для набора символов utf-8, хотя я предполагаю, что здесь вам потребуется набор ANSI.

0 голосов
/ 17 февраля 2011

Вы пробовали это?

Server.HTMLEncode( sWeirdValue )
...